美文网首页
js面向对象:封装

js面向对象:封装

作者: day_day_up | 来源:发表于2017-03-27 13:25 被阅读0次

封装

1.不合理:构造函数模式的问题

构造函数方法很好用,但是存在一个浪费内存的问题。
请看,我们现在为Cat对象添加一个不变的属性type(种类),再添加一个方法eat(吃)。那么,原型对象Cat就变成了下面这样:

function Cat(name,color){
    this.name = name;
    this.color = color;
    this.type = "猫科动物";
    this.eat = function(){alert("吃老鼠");};
  }
 var cat1 = new Cat("大毛","黄色");
  var cat2 = new Cat ("二毛","黑色");
  alert(cat1.type); // 猫科动物
  cat1.eat(); // 吃老鼠
  alert(cat1.eat == cat2.eat); //false

2.合理的方式:Prototype模式

 function Cat(name,color){
    this.name = name;
    this.color = color;
  }
 Cat.prototype.type = "猫科动物";
 Cat.prototype.eat = function(){alert("吃老鼠")};
var cat1 = new Cat("大毛","黄色");
  var cat2 = new Cat("二毛","黑色");
  alert(cat1.type); // 猫科动物
  cat1.eat(); // 吃老鼠
  alert(cat1.eat == cat2.eat); //true

3.Prototype模式的验证方法
3.1.isPrototypeOf()

这个方法用来判断,某个proptotype对象和某个实例之间的关系。

alert(Cat.prototype.isPrototypeOf(cat1)); //true
alert(Cat.prototype.isPrototypeOf(cat2)); //true

3.2 .hasOwnProperty()

每个实例对象都有一个hasOwnProperty()方法,用来判断某一个属性到底是本地属性,还是继承自prototype对象的属性。

alert(cat1.hasOwnProperty("name")); // true
alert(cat1.hasOwnProperty("type")); // false

3.3 .in运算符

in运算符可以用来判断,某个实例是否含有某个属性,不管是不是本地属性。in运算符还可以用来遍历某个对象的所有属性。

alert("name" in cat1); // true
alert("type" in cat1); // true
  for(var prop in cat1) { alert("cat1["+prop+"]="+cat1[prop]); }

参考文档 ++Javascript 面向对象编程(一):封装

相关文章

  • javascript面向对象编程

    javascript面向对象编程一(封装) 通俗易懂绝对干货 JS面向对象编程

  • JS面向对象

    JS面向对象入门 1、面向对象语言概念面向对象语言主要包括 类、对象、封装、多肽。2、面向对象的编程思想面向过程思...

  • JavaScript面向对象学习笔记

    @(JS技巧)[面向对象] JavaScript面向对象学习笔记 封装 Javascript是一种基于对象(obj...

  • JS汇总---面向对象&数组

    面向对象 js原型链的继承 静态属性怎么继承 js原型链以及特点 面向对象有哪几个特点 封装,继承,多态 对象的继...

  • js 面向对象 -- 封装

    面向对象三大基本特性是封装,继承,多态。封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类...

  • js面向对象:封装

    封装 1.不合理:构造函数模式的问题 构造函数方法很好用,但是存在一个浪费内存的问题。请看,我们现在为Cat对象添...

  • JS面向对象-面向对象编程 - 封装

    在很多后端语言中对面向对象的理解就是:“万物皆对象”。确实如此,一切皆可看作是对象,面向对象编程。 何为面向对象编...

  • JS面向对象整理篇一——基础概念衍生

    JS面向对象 oop 继承:实例可以继承A对象中的方法和属性,减少代码冗余 封装:对象把实现过程封装在方法中,调用...

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

网友评论

      本文标题:js面向对象:封装

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