當我們在屬性(超類型中的一個數組)中引用值時,使用Crockford的方法(http://javascript.crockford.com/prototypal.html)不起作用,因爲這在所有對象中都是常見的。在JavaScript中使用Prototypal Inheritance的正確方法?
那麼,在Javascript中進行對象繼承的建議方法確實沒有問題,並且可視化地封裝了所有對象的方法和屬性?
實施例:
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}
var p1 = {name: "nick", friends : ["a1", "a2"]};
var p2 = Object.create(p1);
p2.name ="john";
p2.friends.push("andre");
alert(p1.friends);
alert(p2.friends);
alert(p1.name);
alert(p2.name);
的朋友陣列返回相同的值既p1和p2,當我期望它返回不同的值。
不幸的是,我現在唯一能提出的解決方案是深度克隆。希望有人有一個更好的主意。 – 2010-10-18 02:02:09