gpt4 book ai didi

javascript - 继承和对象字面量

转载 作者:行者123 更新时间:2023-11-30 08:54:34 24 4
gpt4 key购买 nike

我创建了以下测试,但我不确定它为什么不起作用:http://jsfiddle.net/SKphY/ .我应该得到三个警告对话框:“你好”和“再见”和“再见”。相反,我只得到前两个。

var p = {
hello : function() {
alert('hello');
}
};

var obj1 = Object.create(p, {
goodbye : function() {
alert('goodbye');
}
});

var obj2 = $.extend(p, {
goodbye : function() {
alert('goodbye');
}
});

$(function() {
// The third line (below) gives the parser error:
// 'Uncaught TypeError: Property 'goodbye' of object #<Object>
// is not a function'

obj1.hello();
obj2.goodbye(); // This executes fine
obj1.goodbye(); // This gives the parser error
});

重点是我正在学习如何使用对象继承,在本例中是使用对象文字,我很好奇为什么当我使用 jQuery.extend 时它对我有用,而不是使用 Object.create。据我所知,我似乎遵循了 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create 中概述的方法。 .我做错了什么?

谢谢你的时间,公里。

最佳答案

http://jsfiddle.net/SKphY/1/

正如@headacheCoder 指出的那样,Object.create 中的第二个参数用于属性对象(这在您链接的 MDN 文档中也有描述)。

检查上面的链接以获得可行的解决方案:

var obj1 = Object.create(p, {
goodbye : {value : function() {
alert('goodbye');
}}
});

关于javascript - 继承和对象字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com