JS中多种方式创建对象详解
来源: 阅读:770 次 日期:2016-07-19 13:54:25
温馨提示: 小编为您整理了“JS中多种方式创建对象详解”,方便广大网友查阅!

下面小编就为大家带来一篇JS中多种方式创建对象详解。小编觉得挺不错的。现在分享给大家,给大家一个参考。

1.内置对象创建

var girl=new Object(); 

  girl.name='hxl'; 

  console.log(typeof girl); 

2.工厂模式,寄生构造函数模式

function Person(name){ 

    var p=new Object();//内部进行实例化 

    p.name=name; 

    p.say=function(){ 

      console.log('my name is '+ p.name); 

    } 

    return p;//注:一定要返回 

var girl=Person('haoxioli'); 

girl.say(); 

3.构造函数创建

var Product=function(name){ 

    this.name=name; 

    this.buy=function(){ 

      console.log('我衣服的牌子是'+this.name); 

    } 

  var pro=new Product('真维斯'); 

  pro.buy(); 

4.原型创建,缺点:实例中的每个属性有可能会不一样

var Role=function(){} 

  Role.prototype.name={nickName:'昵称'}; 

  var boy=new Role(); 

  boy.name.nickName='刘晓兵'; 

  console.log(boy.name.nickName);//刘晓兵 

  var girl=new Role(); 

  girl.name.nickName='郝晓利'; 

  console.log(boy.name.nickName);//郝晓利,因为实例对象可以修改原型中的引用对象的值 

  console.log(girl.name.nickName);//郝晓利 

5.混合模式:原型+构造,可以把不让实例修改的属性放到构造函数中,可以修改的放原型中

var Role=function(){ 

    this.name={nickName:'aaa'}; 

  } 

  Role.prototype.age=30; 

  var boy=new Role(); 

  boy.name.nickName='boy'; 

  console.log(boy.name.nickName);//boy 

  var girl=new Role(); 

  girl.name.nickName='girl'; 

  console.log(boy.name.nickName);//boy,实例不会修改构造函数中的值 

  console.log(girl.name.nickName);//girl 

6.字面量形式

var cat={ 

    name:'lucy', 

    age:3, 

    sex:'母'

  };//将对象转换成字符串 

  console.log(JSON.stringify(cat));//{"name":"lucy","age":3,"sex":"母"} 

  var dog='{"name":"john","sex":"公"}'; 

  console.log(JSON.parse(dog).name);//将字符串转为对象 

7.拷贝模式

function extend(tar,source){ 

    for(var i in source){ 

      tar[i]=source[i]; 

    } 

    return tar; 

  } 

  var boy={name:'醉侠客',age:20}; 

  var person=extend({},boy); 

  console.log(person.name); 

8.第三方框架

//先引入包 

<script src='js/base2.js'></script> 

//base2框架,Base.extend及constructor都是固定用法 

  var Animal=Base.extend({ 

    constructor:function(name){ 

      this.name=name; 

    }, 

    say:function(meg){ 

      console.log(this.name+":"+meg); 

    } 

  }); 

  new Animal('lily').say('fish'); 

另一个第三方框架

<script src='js/simplejavascriptinheritance.js'></script> 

//simplejavascriptinheritance框架,Class.extend及init都是固定用法 

  var Person=Class.extend({ 

    init:function(name){ 

      this.name=name; 

    } 

  }); 

  var p=new Person(); 

  p.name='over'; 

  console.log(p.name); 

以上这篇JS中多种方式创建对象详解就是小编分享给大家的全部内容了,希望能给大家一个参考

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map