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

前端之家收集整理的这篇文章主要介绍了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对象

原文链接:https://www.f2er.com/js/422064.html

猜你在找的JavaScript相关文章