javascript - 在 Javascript 中使用创建与原型(prototype)

标签 javascript

我是 JS 新手。

我正在 JSFiddle 中进行实验。

我创建了一个对象 A,然后创建了两个新对象 B 和 C,如下所示。

debugger;
var A = {
    name:"h",
    lastname:'n',
    address:'B'
};
A.getname = function()
{
    console.log(this.name);
};
var B = Object.create(A);
var C=new Object();
C.prototype = A;
console.log(B.lastname);
console.log(C.lastname);
A.getname();
B.getname();
C.getname();

我采用了 javascript:Good Parts book 中的使用 Object.create(old object) 使用现有对象创建新对象的概念以及从 http://www.codecademy.com/courses/objects-ii/3/3?curriculum_id=506324b3a7dffd00020bf661 继承对象的概念。 .

调试后, 但我的值 console.log(C.lastname) 未定义,并且 C.getname() 给了我错误。

TypeError: C.getname is not a function

为什么它会抛出错误以及在这种情况下使用 Object.create() 的优点是什么。

最佳答案

如果您想使用 .prototype 进行继承,则需要 AC 是类(而不仅仅是对象)。

var A = function() {
    this.name = 'h';
    this.lastname = 'n';
    this.address = 'B';
}
A.prototype.getname = function() {
    console.log(this.name);
};
var a = new A(); 
console.log(a.getname()); // h

var C = function() {};
C.prototype = new A();
var c = new C();
console.log(c.lastname); // n
console.log(c.getname()); // h

使用 Object.create 的一个显着优势超过Object.prototype对于继承来说(如此处所示),通过 Object.create 您可以使用简单的对象(而不是类)。

为了更好地理解使用 Object.create 的优点,请参阅 @FelixKling 对 similar question 的接受答案...

关于javascript - 在 Javascript 中使用创建与原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31091608/

相关文章:

javascript - 钛加速器 : Cannot set TabGroup Nav Bar to hidden

javascript - Google Maps JavaScript API - 建筑样式

javascript - 这个javascript代码可以优化吗?

javascript - ReactJS中仅基于字符串选择组件,无需切换

javascript - AJAX 页面转换后 Woocommerce 功能被禁止

javascript - 在reactjs中的两个函数之间添加延迟

javascript - mousemove parallax 仅轻微移动而不是鼠标位置

javascript - 固定 div 滚动停止后

javascript - 将 javascript 数组中的项目移动到特定位置的有效方法

javascript - 未捕获的类型错误 : Cannot use 'in' operator to search for 'options' in Mumbai