美文网首页
javascript中用构造器创建对象与字面量创建对象的区别

javascript中用构造器创建对象与字面量创建对象的区别

作者: harveySpector | 来源:发表于2016-08-01 09:32 被阅读0次

http://m.blog.csdn.net/blog/z1547840014/9734179
当用new操作符调用一个函数时,就会创建一个新的javascript对象.接着,该函数会作为该新建对象的this值被调用,而在原始调用中所使用的参数也都将一并传递给该函数调用
下面我们来研究下使用构造器处创建对象和使用字面量创建对象的区别到底是什么,先看下面的代码


    function Circle(radius){           
       this.radius = radius;     
   }      
  var cicr = new Circle(6);           
   var cicr2 = {radius:6};     

上面两个对象都会拥有2个属性,如果对js这块熟悉的同学想必已经猜到了这2个属性,一个是radius属性,另一个就是从object.prototype继承而来的属性.对于radius属性,他们没有任何区别。但是对于这个原型属性,内部实现上有细小的区别。cicr2是直接继承了object.prototype属性,而cicr是间接继承了object.prototype属性。cicr首先继承了Circle上的原型属性,这个原型属性又继承了object.prototype属性,所以它也完成了对object.prototype的继承。为了得到这种具体的关系,我们可以使用instanceof和constructor来检验他们内部的实现细节

   alert(cicr instanceof Object)
//判断cicr对象是否属于Object对象,结果为true

        alert(cicr instanceof Circle)
//判断cicr对象是否属于Circle对象,结果为true       

 alert(cicr2 instanceof Object)
//判断cicr2对象是否属于Object对象,结果为true                 

alert(Circle==cicr.constructor) //判断cicr对象的构造方法是否是Circle,结果为true         
alert(Object==cicr2.constructor) //判断cicr2对象的构造方法是否是Object,结果为true       
 alert(Object==cicr.constructor) //判断cicr对象的构造方法是否是Object,结果为false              

从上面6个例子我们可以看出instanceof和constructor的区别,也可以得到一条用的结论,即:只要一个对象a的内部prototype属性或者它的原型链上的任意对象与b.prototype是同一个对象,那么a instanceof b就返回true

相关文章

  • javascript中用构造器创建对象与字面量创建对象的区别

    http://m.blog.csdn.net/blog/z1547840014/9734179当用new操作符调用...

  • 链式操作

    对象字面量创建对象 构造函数创建对象 构造函数和原型一起创建对象 参考 JavaScript设计模式 --- 方法...

  • 原型链与继承

    创建对象的方法 字面量创建 构造函数创建 Object.create() 原型 JavaScript 的所有对象中...

  • 08-JavaScript面向对象

    创建对象 JavaScript中如何创建对象 通过默认的Object这个类(构造函数)来创建 通过字面量来创建对象...

  • JavaScript面向对象(二)

    创建对象的方式 通过构造函数 通过字面量 构造函数创建 字面量创建 添加删除对象属性 对象属性不一定必须在定义对象...

  • JavaScript创建对象方式及性能问题

    通过Object构造函数或者字面量创建对象 弊端:无论通过Object来创建对象, 还是通过字面量来创建对象都存在...

  • JavaScript创建对象的七种方式

    JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种...

  • javascript 对象

    创建对象的三种方法: 字面量 obj = {}、obj = new Object()、构造函数 字面量方法创建对象...

  • 创建对象的几种方式

    字面量创建对象 new Object() 创建对象 工厂模式 构造函数 原型 混合

  • 对象

    1. 创建对象的方式 对象字面量 通过Object构造器创建对象 以上两种方法缺点: 每创建一个对象,都要重新声明...

网友评论

      本文标题:javascript中用构造器创建对象与字面量创建对象的区别

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