微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript对象,new操作符,原型链,分离器,链式调用

1.使用原型继承和不使用的区别

function A(){
    this.name = 'name';
    this.sayName = function(){
        return this.name
    }
}
var aTest = new A();
function B(){
    this.name = 'name'
}
B.prototype = {
    sayName: function(){
        return this.name
    },constructor: B
}
var bTest = new B;   // 使用不使用括号,解析器自动补全,如果需要传参,那就毋庸置疑

两者的区别就是,A的每个实例都会拷贝一份sayName,耗内存。通过原型继承可以节省内存
2.使用new操作符的理解

new操作符,主要的作用就是把实例对象this和原型链关联起来,如果不是用,那么实例对象的this就指向window了

3.jQuery中强制使用new构建实例对象

var jQuery = function(selector){
    if(!this instanceof jQuery){
        return new jQuery(selector)
    }
    this.selector = selector;
    return this;
}
// 千万不要这样写
var jQuery = function(selector){
    this.selector = selector;
    return new jQuery(selector); // 死循环
}
// 实际上,jquery通过分离构造器的手段解决问题
var jQuery = function(selector){
    return new jQuery.fn.init(selector); // 实例化原型链下的init方法,注意this指向改变了
}
jQuery.fn = jQuery.prototype = {
    init: function(selector){ console.log(this) },construtor: jQuery
}

3.构造器的关联

jQuery.fn.init.prototype = jQuery.fn;  // 将jQuery原型链赋值给原型链下的init的原型链,就把分离的两个构造器关联起来了,即jQuery的原型对象覆盖了init的原型对象(引用传递不用担心循环饮用的问题)

4.链式调用
优点:不用多说
实现原理:每个方法都返回了同一个this对象

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐