因此,我来自古典的OOP语言,并试图围绕javascript原型风格。
试图理解函数构造函数模式与Object.create模式之间的区别:
函数构造器I可以创建私有函数和方法如下:
function Human() {
this.public = "public accessible variable";
let private = "private only accessible inside Human";
}
Human.prototype.speak = "hahahaha";
var child = new Human();
Console.log(child.public) // prints
console.log(child.private) // don't print 福利:
__proto__ -> [[prototype]] (?)。
Object.create I only:
__proto__ )设置为人类对象(而不是人的原型)但那又怎样?直接将子模型设置为人工构造函数的实际优点是什么?
实际使用的例子会有帮助!
发布于 2019-01-12 11:23:53
调用构造函数:
const child = new Human();(几乎)与:
const child = Object.create(Human.prototype);
Human.call(child);因此,我不认为Object.create是一种语言特性,而是理解JS中原型继承的一种方式。
对于没有构造函数的原型链,有非常有限的用途。一个例子是Human的反序列化。
const serialized = JSON.stringify(child); // Human inheritance gets lost, its a plain object now
const child2 = Object.assign(Object.create(Human.prototype), JSON.parse(serialized));https://stackoverflow.com/questions/54159066
复制相似问题