首页 > 其他 > 详细

构造函数详解

时间:2020-03-20 19:42:20      阅读:60      评论:0      收藏:0      [点我收藏+]

JavaScript构造函数详解

1、构造函数就是初始化一个实例对象,对象的prototype属性是继承一个实例对象。

2、构造函数的三大特点:

 a:构造函数的函数名的第一个字母通常大写。

 b:函数体内使用this关键字,代表所要生成的对象实例。

 c:生成对象的时候,必须使用new命令来调用构造函数。

3、注意事项:

  a:默认函数首字母大写

  b:构造函数并没有显示返回任何东西。new操作符会自动创建给定的类型并返回他们,当调用构造函数时,new会自动创建this对象,且类型就是构造函数类型。

  c:也可以在构造函数中显示调用return,如果返回的值是一个对象,它会代替新创建的对象实例返回。如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回。

<script>

        function Person(name){

            this.name = name

        }    

        var p1 = new Person(‘john‘)

        console.log(p1)

        function person(name){

            var obj = new Object()

            obj.name = name

            return obj

        }

        var p2 = person(‘john‘)

        console.log(p2)

         p1:Person{name:’john’}

         P2:{name:’john’}

    </script>

4、new命令

  new命令的作用,就是执行一个构造函数,并且返回一个对象实例。使用new命令时,它后面的函数调用就不是正常的调用,而是依次执行下面的步骤。

  a:创建一个空对象,作为将要返回的对象实例。

  b:将空对象的原型指向了构造函数的prototype属性。

  c:将空对象赋值给构造函数内部的this关键字。

  d:开始执行构造函数内部的代码。

  也就是说,构造函数内部,this指向的是一个新生成的空对象,所有针对this的操作,都会发生在这个空对象上。构造函数之所谓构造函数,意思是这个函数的目的就是操作一个空对象(即this对象),将其构造为需要的样子。

  以上是new命令的基本原理,这个很重要。以下会用具体实例来验证该原理的过程。

  new命令的作用,就是调用一个构造函数,并且返回一个对象实例。

5、因为构造函数也会是函数,所以可以直接被调用,但是它的返回值为undefine,此时构造函数里面的this对象等于全局this对象。this.name其实就是创建一个全局的变量name。在严格模式下,当你不通过new调用Person构造函数会出现错误。

6、也可以在构造函数中用Object.defineProperty()方法来帮助我们初始化;

<script>

       function Person(){

           Object.defineProperty(this,‘name‘,{

               get:function(){

                   return name;

               },

               set:function(newName){

                   name=newName

               },

               enumerable:true,

               configurable:true

           })

       }

       var p1=new Person(‘John‘)

       console.log(p1)

7、在构造函数中使用原型对象

    使用字面量形式改写了原型对象改变了构造函数的属性,因此他指向Object而不是Person。这是因为原型对象具有一个constructor属性,这是其他对象实例所没有的。当一个函数被创建时,它的prototype属性也被创建,且该原型对象的constructor属性指向      该函数。当使用对象字面量形式改写原型对象时,其constructor属性将被置为泛用对象Object.为了避免这一点,需要在改写原型对象的时候手动重置constructor

8、var Book = function(name, price) {
     this.name = name;
     this.price = price;
  }

  var java = new Book(‘Master Java‘, 82);

   当使用new关键字来调用构造函数时,执行上下文从全局变量对象(window)变成一个空的上下文,这个上下文代表了新生成的实例。因此,this关键字指向当前创建的实例。
   默认情况下,如果你的构造函数中没有返回任何内容,就会返回this----当前的上下文,也就是你当前创建的对象。要不然就返回任意非原始类型的值。而普通的函数如果没有明显的返回值将返回undefined。

9、在JavaScript构造函数中:如果return值类型,那么对构造函数没有影响,实例化对象返回空对象; 如果return引用类型(数组,函数,对象),那么实例化对象就会返回该引用类型;

 

构造函数详解

原文:https://www.cnblogs.com/yqyf/p/12331107.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!