码迷,mamicode.com
首页 > Web开发 > 详细

js面向对象实现方式的演变及常用方法

时间:2017-02-19 11:07:10      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:java   资源   name   原理   person   部分   模式   return   混合   

 面向对象三大特性:封装,继承,多态。
1.原始模式
var obj = new Object();  obj.name = name; obj.sex = sex;
obj.showName = function(){                
     alert("我的名字叫"+this.name)
}
obj.showSex ......
var Cat = {}   也可以用json的方式创建   原理相同
 
2.工厂模式
容易理解版
function createPerson(name,sex){
     // 原料  
      var obj = new Object();
      //加工    
     obj.name = name;
     obj.sex = sex;
     obj.showName= function(){
         alert(‘我的名字叫‘+this.name); 
     }
     //出厂
}
json版
function Cat(name,color){
     return {
          name: name,
          color: color,
          showNamr: function(){
              alert(‘我的名字叫‘+this.name);  
          }
     }
}
缺点:没有new,创建多个副本,代码不够简洁
3.构造函数模式
function Cat(name,color){
     this.name = name;
     this.color = color;
}
var cat1   = new Cat("大象","黄毛");
new的作用:1.系统自动创建一个对象 2.将内部的this指向这个创建的对象 3.返回这个对象
缺点:依旧创建多个副本浪费内存资源 
4.原型模式(混合法)
function Cat(name,colot){
     this.name = name;
       this.color = color;
}
Cat.prototype.type = " 猫科动物";
Cat.prototype.eat = function(){
     alert("吃老鼠");
}
问题注意
alert(cat1.eat == cat2.eat); //true
type和eat就指向同一块内存区域了
Cat即是类也是构造函数在js里是部分家的
构造函数首字母大写
原型上方法属性和实例行间赋予的方法属性  行间优先级较高会替换原型上的方法属性
 
5.面向对象常用到的方法
prototype 属性使您有能力向对象添加属性和方法(也就就是java中的类的方法)
constructor: 返回此对象创造它的函数的引用(构造函数)
instanceof: 判断对象是不是 一个构造函数的实例
 
isPrototypeOf() 判断prototype对象和实例之间的关系
Cat.prototype.isPrototypeOf(cat1);
hasOwnProperty() 判断属性是行间本地属性还是 集成prototype
cat1.hasOwnProperty(‘name‘)属于自己返回true
in 判断是否包含某个属性 不管是本地还是原型上
“name” in cat1
in 用来遍历所有属性

js面向对象实现方式的演变及常用方法

标签:java   资源   name   原理   person   部分   模式   return   混合   

原文地址:http://www.cnblogs.com/LiSuSpAu/p/6414849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!