美文网首页
JS 原型链(四)-new,this,instanceof,ty

JS 原型链(四)-new,this,instanceof,ty

作者: 平凡的lily | 来源:发表于2018-08-13 13:49 被阅读0次

    JS 原型链(四)-new,this,instanceof,typeof,for...in

    new和this是javascript中非常重要的两个关键字。它们出现在了前面的例子中,这里简单记录下对它们的理解。

    首先说下new一个对象的过程:

    1.创建一个新对象。      2.this指向这个新对象。   3.执行代码,即对this赋值。    4.返回this

    此外,构造函数就像一个模板。可以new出多个实例。可以使用instanceof判断引用类型属于哪个构造函数的方法。一个函数是否是一个变量的构造函数。f instanceof Foo的判断逻辑是:f 的__proto__一层一层往上,看能否对应到Foo.prototype.再试着判断f instanceof Object.     

    这里有一个有趣的地方, div1 instanceof Function为false,可是div1 instanceof Object为true。而 Ele instanceof Function为true,同时Ele instanceof Object为true。因为这里是两条线。一条线是Function到Object再到null,一条线是没有Function,到 Object再到null。这个差异同时也可以从new一个对象的过程中可以看出。

    typeof 总是习惯拿来和instanceof来比较,上面说了instanceof是用来判断引用类型属于哪个构造函数的方法。那在js中,typeof又能够得到哪些类型呢?

    从上面的截图中可以看出,typeof只能准确辨别出js中的值类型,对于引用类型只能区别出function,其他都是oobject。可能因为function在js中太重要的缘故。

    this的指向总是让人捉摸不透,这里用一句话概述它最为普遍的指向:通过调用对象属性方法来访问this,t无论这个方法是自身的一个属性还是从原型中得到的一个属性,this永远指向这个对象。这个例子可以从(二)中的例子中看出,多次碰到this.ele都是指一个元素,this一直指向div1自身。

    for...in用来循环对象自身的属性。如果要屏蔽来自原型的属性,则可以加上f.hasOwnProperty(item)。这里注意高级浏览器这一步帮我们做了,但是还是建议加上这个判断,保证程序的健壮性。

    相关文章

      网友评论

          本文标题:JS 原型链(四)-new,this,instanceof,ty

          本文链接:https://www.haomeiwen.com/subject/egnybftx.html