var blah = (function(){
function ret(){
}
ret.prototype = Object.create(Object.prototype, {
getone: {
get: function() { return 1; }
},
funcstuff: function(){ console.log('funcstuff'); }
});
return ret;
})();
var b = new blah();
console.log(b.getone); // 1
b.funcstuff(); // Uncaught TypeError: Property 'funcstuff'
// of object #<Object> is not a function
我想知道使用上面的funcstuff
将ret
添加到Object.create()
原型的正确语法。
答案 0 :(得分:1)
我认为正确的语法是:
var blah = (function(){
function ret(){
}
ret.prototype = Object.create(Object.prototype, {
getone: {
get: function() { return 1; }
},
funcstuff: { value: function(){ console.log('funcstuff'); } }
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
});
return ret;
})();
var b = new blah();
console.log(b.getone); // 1
b.funcstuff();
Object.create()
不直接接受函数或属性,它采用属性描述符,它本身就是一个对象,其标准属性可以设置为configurable
,{ {1}} ......等等。
答案 1 :(得分:1)
我想知道使用上面的Object.create()将funcstuff添加到ret原型的正确语法。
由于您提供给Object.create
定义属性的对象是property descriptor,如果您希望funcstuff
实际上 是一个函数,那么您可以定义它作为描述符中的value
属性:
ret.prototype = Object.create(Object.prototype, {
getone: {
get: function() { return 1; }
},
funcstuff: { // changes
value: function(){ console.log('funcstuff'); } // changes
} // changes
});