gpt4 book ai didi

javascript - 在 Javascript 中使用函数分配进行原型(prototype)设计

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

我一直在尝试 javascript 的一些基础知识,这是我观察到的结果。

我写了一个Function对象的原型(prototype)修改方法

Function.prototype.method = function(name, func)
{
this.prototype[name] = func;
return this;
}

function pirates(value)
{
console.log("I just throw away the value!!" + value);
}

pirates.method("my_skill", function(){
console.log("Pirate skills");
});

new_pirate = new pirates(1234);

//SUCCESS
new_pirate.my_skill(); //prints "Pirate skills"

var someCrappyVariable = function(){
return function()
{
console.log("I am going to just sit and do nothing. Really!");
}
}();

**//Throws error. WHY???????? This was assigned a function, so ideally prototype should work on this too? Shouldn't it?**
someCrappyVariable.method("crappyFunction", function(){
console.log("am I doomed?");
});

为什么最后一个赋值会抛出一个错误,说 someCrappyVariable 不是一个函数,而之前它被赋值了一个函数引用?我很困惑。

干杯

最佳答案

您的代码应该在此处抛出错误:

new_pirate.method("my_skill", function(){
console.log("Pirate skills");
});
// TypeError: new_pirate.method is not a function

... 因为 method 不是直接或继承的方法。从 new pirates(1234) 创建的对象不会继承自 Function;它将继承自 Object(理想情况下,不应使用自定义方法扩展)。

关于javascript - 在 Javascript 中使用函数分配进行原型(prototype)设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1970938/

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