JS面向对象的实现和原理

 2023-09-11 阅读 18 评论 0

摘要:从原型生成实例,JS提供了构造函数模式(constructor):   构造函数就是普通的函数,但是内部使用this变量,对构造函数使用new运算符时,就能生成实例,并且this对象绑定在实例对象上。 javascript面向对象编程、  例&

从原型生成实例,JS提供了构造函数模式(constructor):

  构造函数就是普通的函数,但是内部使用this变量,对构造函数使用new运算符时,就能生成实例,并且this对象绑定在实例对象上。

javascript面向对象编程、  例:

    function Dog(name,color){

      this.name = name;

js面向对象的理解面试题目,      this.color = color;

    }

    var dog1 = new Dog("a","yellow");

面向对象设计的基本原理、    var dog2 = new Dog("b","black");

    dog1.name ==> "a"

  实例对象自动包含有一个constructor属性,指向他们的构造函数。

面向对象的七个原则,    dog1.constructor == Dog

构造函数模式生成实例对象存在内存浪费问题,因为每个构造函数的成员都会被重新创建,即使是不变的那些。

因此JS提供了Prototype模式:每一个构造函数都有一个prototype属性,指向另一个对象,即原型对象,这个对象的所有属性和方法,都会被构造函数的实例对象所继承。

什么时候面向对象?  例:接上

    Dog.prototype.type = "DOG";

    Dog.prototpe.bite = function(){alert("bite");}

前端面向对象。    var dog3 = new Dog("c","white");

    var dog4 = new Dog("d","red");

    dog3.type ==>"DOG"

    dog3.type == dog4.type

配合prototype属性的方法:

  isPrototypeOf:是某个对象的构造方法的原型。

    Dog.prototype.isPrototypeOf(dog1) ==>true

  hasOwnProperty:判断对象属性是本身的还是继承自原型的。

    dog4.hasOwnProperty("type") ==>false

  in:判断是否包含某个属性,不管本身还是继承。或者用来遍历对象所有属性。

    "name" in dog4 ==>true

    for(var p in dog4){alert(p);}

 

_proto_:由实例直接指向原型

    

转载于:https://www.cnblogs.com/zawjdbb/p/6433762.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/45196.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息