javascript,原型无法制作自己的方法
javascript, prototype can't make own method
我需要让它工作,但我不知道为什么不工作?任何想法?感谢您的帮助!
(function( window ) {
function select( selector ) {
return document.querySelectorAll(selector);
};
select.prototype.attr = function(atitr)
{
return this.getAttribute(atitr);
};
window.j = select;
})( window );
console.log(j('.lol:last-child').attr('href'));
在你的函数中:
function select( selector ) {
return document.querySelectorAll(selector);
};
所以 select return 是一个 NodeList,它不继承自 select .然后是:
window.j = select;
和
j(...).attr(...)
所以 select 在没有 new 的情况下被调用,所以它不会创建自己的实例并将其分配给这个。由于该对象无论如何都没有 returned,因此 returned 对象不会从 select 继承,即使您使用 新.
编辑
您可以 return 具有 DOM 个元素的对象作为 属性,例如:
<div class="lol">
<a href="d" class="lol">sadas11DA</a>
<a href="d31" class="lol">sadas222DA</a>
</div>
<script>
(function(window) {
function Select(selector) {
this.nodes = document.querySelectorAll(selector);
}
Select.prototype.attr = function(attribute) {
console.log(this.nodes);
return this.nodes[0]? this.nodes[0].getAttribute(attribute) : null;
}
window.j = Select;
}(this))
console.log(new j('.lol:last-child').attr('href'));
</script>
注意修改后的标记。同时传递 this 而不是 window 因为 this 无法修改,window可以.
我需要让它工作,但我不知道为什么不工作?任何想法?感谢您的帮助!
(function( window ) {
function select( selector ) {
return document.querySelectorAll(selector);
};
select.prototype.attr = function(atitr)
{
return this.getAttribute(atitr);
};
window.j = select;
})( window );
console.log(j('.lol:last-child').attr('href'));
在你的函数中:
function select( selector ) {
return document.querySelectorAll(selector);
};
所以 select return 是一个 NodeList,它不继承自 select .然后是:
window.j = select;
和
j(...).attr(...)
所以 select 在没有 new 的情况下被调用,所以它不会创建自己的实例并将其分配给这个。由于该对象无论如何都没有 returned,因此 returned 对象不会从 select 继承,即使您使用 新.
编辑
您可以 return 具有 DOM 个元素的对象作为 属性,例如:
<div class="lol">
<a href="d" class="lol">sadas11DA</a>
<a href="d31" class="lol">sadas222DA</a>
</div>
<script>
(function(window) {
function Select(selector) {
this.nodes = document.querySelectorAll(selector);
}
Select.prototype.attr = function(attribute) {
console.log(this.nodes);
return this.nodes[0]? this.nodes[0].getAttribute(attribute) : null;
}
window.j = Select;
}(this))
console.log(new j('.lol:last-child').attr('href'));
</script>
注意修改后的标记。同时传递 this 而不是 window 因为 this 无法修改,window可以.