Line
Person.prototype.friends = [];
Adds the friends property to the Person prototype, which makes it common to all new objects created using the Person constructor. So, if you want each object to have its own friends, you need to add the friends property to a separate object.
, , - , :
function Person(name) {
this.friends = [];
if (name) {
this.name = name;
}
}
Javascript OO ( , ). - , , . "sayHello" , , Person "Hello". , : " , Person".
, Javascript , . 1, , , , . 2, , . , " " 1, , , , , , .
, . , . , , , .
Javascript , . , , , "", "", Javascript . , , - , . , .
Javascript , " ", , . . tyrion sayHello, :
tyrion.sayHello()
Javascript tyrion , sayHello. , , , , , sayHello. , , , , , tyrion 'this' . javascript, :
function find_property(original_obj, property_name) {
var found_prop = undefined;
var current_obj = original_obj;
while(found_prop == undefined && current_obj != undefined) {
if ( obj.hasOwnProperty(property_name) ) {
found_prop = obj[property_name];
} else {
current_obj = current_obj.__proto__;
}
}
return found_prop;
}
var sayhello = find_property(tyrion, 'sayHello');
if (typeof sayhello == 'function') {
sayhello.call(tyrion);
}
, . , - , , , , - . , , "" .
, , , "", javascript "", , .
, , . , Douglas Crockford "Javascript: The Good Parts" - .