为什么我们在JS
使用原型面向对象编程我是一个新手的js空中接力。 我读书的地方,原型在OOP
用于JS
确定这里是一个例子为什么我们在JS
function Dog(name) {
this.name = name;
this.age = age;
this.bark = function() {
console.log("Woof");
}
}
现在我的问题是,为什么我们不能只创建对象这样
Dog doberman = new Dog;
这将创建一个新的狗对象。
但通过原型,我们做这样的事
var doberman = Object.create(dog);
我读的功能可以被分离出来,并通过原型,他们可以被添加到该对象。 请帮帮我。我很困惑..
那么问题只是 为什么使用Object.prototype的方法?现在
我的问题是,为什么我们不能只创建对象是这样的:
Dog dog = new Dog;
可以,实际上。你Dog
功能也作为一个“构造函数”,像这样:
var doberman = new Dog("Fenton");
我明白这是令人困惑,因为JavaScript提供这样做(基本上)同样的事情很多不同的方式,例如:
var doberman = { name: "Fenton", age: 5, bark: function() { return "woof"; } }
(虽然我的第一个示例创建一个使用Dog
为原型(一种继承关系),而我的第二个示例创建一个新的object
实例与非继承唯一实例级属性新object
比如,尽管由于JavaScript的鸭子打字th在很多时候,差异很重要(尽管高性能JavaScript总是比实例级属性更喜欢原型构造函数)。
你的意思是我们也可以在Js没有原型的情况下做OOP?那么它会影响性能正确的原因,因为它们不是每个实例都重新创建的? –
@MarcAndreJiacarrini是的,尽管在方法上使用原型可以为每个实例节省内存。如果你没有太多实例,那么简单地不使用原型就不会对你造成太大影响。 –
原型允许你以确保这个类的任何对象将具有(至少在开始时),该属性(即变量,方法)。 – MaxZoom
JavaScript不是类型化,所以你不能用'狗杜宾=新狗()',但你肯定可以用'VAR杜宾=新狗()' – Phil
对于'Object.create',我建议你阅读文档〜 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create – Phil