我有一个点击处理程序
e.addEventListener('click', this.Multiply, false);
和一个功能
this.Multiply = function () {
APi.Multiply(this);
};
和简单的选择元素 所以这会得到Select元素
为什么要运行
this.selectedIndex
给出值=> 2
但是运行this.getOwnPropertyNames()
会抛出错误
或this.hasOwnProperty('selectedIndex')
- >假的?
答案 0 :(得分:1)
因为selectedIndex实际上是HTMLSelectElement原型的属性而不是实例属性。要按照自己的意愿进行测试,可以尝试以下方法:
this.__proto__.hasOwnProperty('selectedIndex');
或
this.constructor.prototype.hasOwnProperty('selectedIndex');
你应该得到预期的结果。
当然,假设您的this
实例实际上是您选择的元素。当然给出了这个HTML:
<select id="example"></select>
运行此javascript:
var el = document.getElementById("example");
console.log(el.__proto__.hasOwnProperty('selectedIndex'));
将在控制台上打印为true。