美文网首页
构造函数的属性和方法

构造函数的属性和方法

作者: AlisaMfz | 来源:发表于2018-07-03 17:42 被阅读32次

    构造函数: function Cat (name ,color){
    this.name = name;
    this.color = color;
    }

    //生成实例对象
    var cat1 = new Cat('大猫','黄色');
    var cat2 = new Cat('小猫','蓝色');
    构造函数是一个普通的函数,但是内部使用了this变量,对构造函数使用new 运算符,就能生成实例,并且this变量会绑定在实例对象上。

    cat1 和 cat2 会自动增加constructor 属性,指向他们的构造函数。
    cat1.constructor == Cat //true;
    cat2.constructor == Cat //true;

    验证原型对象与实例对象之间的关系
    cat1 instanceof Cat //true
    cat2 instanceof Cat //true

    每一个构造函数 都会有每一个prototype 属性 这个对象上的属性和方法都会被实例对象继承。
    我们要在Cat方法加上一个eat方法和type属性 ,
    function Cat(name,color){
    this.name = name;
    this.color = color;
    this.type ='cat';
    this.eat = function(){
    alert('eat');
    }
    }
    这样的话 在每次创建实例对象的时候 type和eat() 方法都是一模一样的内容,多占用一些内容,这样不环保,也缺乏效率。

    Cat.prototype.type ='cat';
    Cat.protitype.eat = function(){
    alert('eat');
    }
    把要增加的不变属性和方法加到prototype上,可以使这些在内存中只生成一次。

    isPrototypeOf() 配合Protype属性,来判断某个Protype属性和某个实例对象的关系
    Cat.prototype.isProtypeOf(cat1);//true
    Cat.protype.isProtypeOf(cat2);//true;

    hasOwnProperty()
    每一个实例对象都有一个hasOwnProperty()方法,来判断某个属性是否属于示例对象还是继承与构造函数。
    cat1.hasOwnProperty('name');//true;
    cat2.hasOwnProperty('type');//false

    in运算符
    in运算符可以用来判断,某个实例是否含有某个属性,不管是不是自身属性
    ‘name’ in cat1 //true;
    'type' in cat1 //true;

    in运算符还可以用来遍历某个对象的所有属性。

    相关文章

      网友评论

          本文标题:构造函数的属性和方法

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