图片上传不了,老出错;就只能复制啦!
这个是我自己构造的对象,用console.log输出看到是这样;foo.fn.foo.init {0: div, 1: div, 2: div, 3: div, 4: div, selector: "div", init: function, aouth: "jer", age: 24, add: "江西"…}
jquery对象用console.log输出像一个数组;[div, div, div, div, div, prevObject: b.fn.b.init[1], context: document, selector: "div", jquery: "1.9.1", constructor: function…]
想知道它是怎么实现的,下面是我写的源码;
(function(){
function foo(selector){
return new foo.prototype.init(selector);
};
foo.fn = foo.prototype= {
init : function(selector){
var elems = document.getElementsByTagName(selector),
len = elems.length,
i = 0;
for(;i < len;i++){
this[i] = elems[i];
};
this.selector = selector
return this;
},
aouth:'jer',
age: 24,
add :'江西'
};
foo.prototype.init.prototype = foo.prototype;
foo.fn.sayName = function(){
return this;
};
foo.fn.sayAdd = function(){
return this;
};
window.foo = foo;
})();
//console.log(foo);
var selects = foo('div');
console.log(selects);
这个其实不难,典型的 Ducking Type 应用。一个 Javascript 对象,只要定义了 length 属性和 splice 方法,它看起来就像一个数组。例如:
全选复制放进笔记
var x = {
'0': 'foo',
'1': 'bar',
length: 2,
splice: function () {}
};
console.log(x); // ["foo", "bar", splice: function]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。