所以我来自经典的OOP语言,并试图用JavaScript原型风格来解决问题。
试图了解函数构造器模式和Object.create模式之间的区别:
函数构造函数,我可以按如下方式创建私有函数和方法:
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我只能 :
__proto__
设置为Human)
对象(而不是人类的原型)那又如何呢?相对于构造函数,直接将孩子的原型设置为人类的实用有什么优势?
实际用途的示例会有所帮助!
答案 0 :(得分:1)
调用构造函数:
myDate = moment(someDate).format('MM/DD/YYYY HH:mm');
(几乎)与:
const child = new Human();
因此,我不会将 const child = Object.create(Human.prototype);
Human.call(child);
视为语言功能,而是将其视为理解JS中原型继承的一种方式。
没有构造函数的原型链的用例非常有限。一个示例是Object.create
的反序列化:
Human