JS中多种方式创建对象详解


Posted in Javascript onMarch 22, 2016

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中多种方式创建对象详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript获得CheckBoxList选中的数量
Oct 27 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 Javascript
JavaScript中获取鼠标位置相关属性总结
Oct 11 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
Mar 13 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
简单的vue-resourse获取json并应用到模板示例
Feb 10 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
js canvas实现写字动画效果
Nov 30 Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 Javascript
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
基于jquery实现无限级树形菜单
Mar 22 #Javascript
javascript的几种继承方法介绍
Mar 22 #Javascript
基于javascript实现文字无缝滚动效果
Mar 22 #Javascript
ajax在兼容模式下失效的快速解决方法
Mar 22 #Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 #Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 #Javascript
jQuery toggle 代替方法
Mar 22 #Javascript
You might like
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
PHP代码优化的53个细节
2014/03/03 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
python多进程并发demo实例解析
2019/12/13 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
试述DBMS的主要功能
2016/11/13 面试题
教师节演讲稿
2014/05/06 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS