Javascript 所有参数都未定义,但属性都有值
在使用时,我注意到Javascript 所有参数都未定义,但属性都有值,javascript,web-component,Javascript,Web Component,在使用时,我注意到attachedCallback函数有一个填充的属性集合。也就是说,它是一个NamedNodeMap,包含传递给元素的所有属性 我还注意到,在attachedCallback函数中指定参数总是会产生undefined 如何在函数中设置属性集合,但任何指定参数都是未定义的?这纯粹是因为浏览器供应商的实现,还是有一种在JavaScript中实现的方法我不知道 例如: var proto = Object.create(HTMLElement.prototype); prot
attachedCallback
函数有一个填充的属性
集合。也就是说,它是一个NamedNodeMap
,包含传递给元素的所有属性
我还注意到,在attachedCallback
函数中指定参数总是会产生undefined
如何在函数中设置属性
集合,但任何指定参数都是未定义的
?这纯粹是因为浏览器供应商的实现,还是有一种在JavaScript中实现的方法我不知道
例如:
var proto = Object.create(HTMLElement.prototype);
proto.attachedCallback = function (elem) {
console.log(elem); // undefined
console.log(this.attributes); // NamedNodeMap
};
堆栈中的某个地方正在调用
apply
或call
,其中第一个参数是包含属性的对象
以下是您如何在代码中完成此操作:
var proto = Object.create(HTMLElement.prototype);
proto.attachedCallback = function (elem) {
console.log(elem); // undefined
console.log(this.attributes); // NamedNodeMap
};
var randomObjectWithAttributes = {
attributes: new NamedNodeMap()
};
proto.attachedCallback.call(randomObjectWithAttributes);
这是Javascript的优点之一,您可以使用调用
和应用
将函数视为属于对象的原型,即使它们不属于对象的原型。如果您熟悉这
在Javascript中的工作方式,这类事情并不奇怪。是的,你说得对。出于某种原因,我没有将attributes
作为函数原型的属性。现在看来很明显了,谢谢你,奥斯汀。既然你已经指出了这一点,这似乎是显而易见的。我没有把属性
看作原型的属性。干杯