class.prototype.property和object.property之间的区别



使用原型有什么意义?如果我上课为 -

var myClass = function(){ this.p1 = 'p1';}

现在,如果我希望将新属性添加为P2

我做的是该类的原型属性,并在对象上进行操作,例如

使用直接对象 ->

var obj = new myClass();
obj.p2 = 'p2';

使用原型 ->

myClass.prototype.p2 = 'p2';

这两个有何不同?还是两行不同?

原型可以帮助您,具有一种继承(原型继承(。
您可以手动向对象添加属性,也可以从其原型中借用该属性。让我们看一些例子:

var obj = new myClass();
obj.p2 = 'p - child';
console.log(obj.p2); // p - child
var obj2 = Object.assign(obj.__proto__); // will borrow the value from the obj prototype
console.log(obj.p2); // p - child

现在看看myllass原型发生了什么:

var obj3 = Object.assign(myClass.prototype); //will borrow the value from the myClass prototype
console.log(obj3.p2); // p - parent

和这里没有现有属性的示例:

var obj4 = new myClass();
var obj5 = Object.assign(obj4.__proto__);
obj4.p3 = 'P3 - value';
console.log(obj4.p3); // P3 - value
console.log(obj5.p3); // undefined

注意:__proto__用于对象 {} ,原型用于 functions

希望这有助于澄清一点。

最新更新