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中多种方式创建对象的更多相关文章

  1. js中json法创建对象(json里面的:相当于js里面的=)

    js中json法创建对象(json里面的:相当于js里面的=) 一.总结 json里面的:相当于js里面的= 4.json创建js对象解决命名冲突:多个人为同一个页面写js的话,命名冲突就有可能发生, ...

  2. java中多种方式读文件

    转自:http://www.jb51.net/article/16396.htm java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内 ...

  3. js中面向对象(创建对象的几种方式)

    1.面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 注:本文引用于 http://www.cnblogs. ...

  4. 013——VUE中多种方式使用VUE控制style样式属性

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. js中常见的创建对象的方法(1)

    工厂模式:抽象了创建具体对象的过程 function createPerson(name, age, job){ var obj = new Object(); obj.name = name; ob ...

  6. js 中继承方式小谈

    题外话 前段时间面试中笔试题有这道题目: 请实现一个继承链,要求如下: 构造函数A():构造函数中有consoleA方法,可以实现console.log("a") 实例对象 a:a ...

  7. js中常见的创建对象的方法

    前两天好好的把高程对象那一块又读了下,顺便写点笔记.补一句:代码都测试过了,应该没有问题的.可以直接拿到控制台跑! 1.工厂模式 function person(name, age, job) { v ...

  8. JS中继承方式总结

    说在前面:为了使代码更为简洁方便理解, 本文中的代码均将"非核心实现"部分的代码移出. 一.原型链方式关于原型链,可点击<深入浅出,JS原型链的工作原理>,本文不再重复 ...

  9. java中多种方式解析xml

    第一种:DOM.DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正 ...

随机推荐

  1. C#的前世今生,学会C#还能找到高薪工作吗?

    其实C#,.net正在逐步淡出程序员的视野是正在发生的现实,量子及量子的小伙伴们,还在坚持写C#代码的人几乎没有了,回忆起过去那些写C#时候的美好时光,真是不胜唏嘘,最近园子里的一篇<C#程序员 ...

  2. matlab 将多个盒图放在一张图上

    1.boxplot 将多个盒图放在一张图上 x1 = normrnd(5,1,100,1)';x2 = normrnd(6,1,200,1)';X = [x1 x2];G = [zeros(size( ...

  3. 【转】js实现复制到剪贴板功能,兼容所有浏览器

    两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能 ...

  4. Wireshark基本介绍和学习TCP三次握手

    wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...

  5. Swift学习笔记-ARC

    Swift使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存.通常情况下,Swift 内存管理机制会一直起作用,你无须自己来考虑内存的管理.ARC 会在类的实例不再被使用时,自动释放其占用的 ...

  6. ASP.NET MVC 必须设置 ErrorMessageString 或 ErrorMessageResourceName,但不能同时设置二者。

    解决方案: 1.此错误是指你的验证错误信息为空(required="")和required提示信息一致,引发的错误. 简单的来说就是两个验证错误提示消息一样了. 2.修改提示消息解 ...

  7. Ubuntu使用MyEclipse闪退的解决办法

    修改myeclipse.ini文件, -Xmx512m-XX:MaxPermSize=512m-XX:ReservedCodeCacheSize=256m-Dosgi.nls.warnings=ign ...

  8. 网络基础之IPv4、网线、

    =========================================Internet是一个圈子,进去这个圈子就要有相应的身份,就像我们去篮球场打球,首先得是个"人"才 ...

  9. SDL绑定播放窗口 及 视频窗口缩放

    绑定播放窗口 必须在Sdl.SDL_Init之前执行 Sdl.SDL_putenv 同时SDL_SetVideoMode里播放窗口长宽不能大于绑定窗口的长宽 int i = Sdl.SDL_puten ...

  10. HashMap Hasptable的区别

    HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable.可能你觉得HashTable很好用,为什么不用呢? ...