gpt4 book ai didi

javascript - 如果构造函数返回对象则不能使用原型(prototype)

转载 作者:行者123 更新时间:2023-11-30 00:16:18 27 4
gpt4 key购买 nike

谁能给我解释一下:

var foo = function() {
if (!(this instanceof foo))
return new foo();
return {}; // Object
};
foo.prototype.myPlugin = function () { // Uncaught TypeError: foo(...).myPlugin is not a function
alert("bar")
};

foo().myPlugin();

但是:

var foo = function() {
if (!(this instanceof foo))
return new foo();
return ""; // string, number, etc
};
foo.prototype.myPlugin = function () {
alert("bar") // --> "bar"
};

foo().myPlugin();

如我所见,jquery 的工作方式类似于第一个代码示例,并返回找到的 DOM 节点数组。但是当我尝试返回数组时,我也有这个错误。

最佳答案

如果您从构造函数返回一个对象,该对象将被返回,而不是 new 创建的对象。如果您返回任何其他类型,您的返回值将被忽略并返回新对象。

jQuery 不返回 DOM 元素数组。 The jQuery object is just array-like itself .它有一些数字属性、一个 length 属性和一个 splice 方法,这是您能够访问 obj[0] 等元素所需的全部 并让控制台像数组一样记录它。

关于javascript - 如果构造函数返回对象则不能使用原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531687/

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