js 创建对象的几种方式
来源:互联网 发布:淘宝是日本的 编辑:程序博客网 时间:2024/06/14 10:10
第一种:工厂模式
例1:
function createObj(name,age){ var o=new Object(); o.name=name; o.age=age; o.sayInfo=function(){ console.log(per1.name+"的年龄是:"+per1.age); } return o;} var per1=createObj("张三",20);per1.sayInfo();
缺点:无法知道对象的类型
第二种:构造函数模式
例2:
function Person(name,age){ this.name=name; this.age=age; this.sayInfo=function(){ console.log(this.name+"的年龄是:"+this.age); }}var per2=new Person("李四",30);per2.sayInfo();
缺点:每个方法都要在每个实例上重新创建一遍
第三种:原型模式
例3:
function Person(){}Person.prototype.name="王五";Person.prototype.age=40;Person.prototype.sayInfo=function(){ console.log(this.name+"的年龄是:"+this.age);}var per3=new Person();per3.sayInfo();
例3基础上,修改为更简单的原型模式
例4:
function Person(){}Person.prototype={ name:'王五',//注:'='改为':' age:40, sayInfo:function(){ console.log(this.name+"的年龄是:"+this.age); }}var per3=new Person();per3.sayInfo();
使用原型模式的缺点样例
例5:
function Person(){}Person.prototype={ name:"赵六", friends:["张三","李四"], sayInfo:function(){ console.log(this.name+"的朋友有:"+this.friends); }}var per4=new Person();var per5=new Person();per4.friends.push("王五");console.log(per4.friends);//输出: ["张三", "李四", "王五"]console.log(per5.friends);//输出: ["张三", "李四", "王五"]
缺点:per4与per5指向同一原型,per4修改了引用的数组,per5也随之改变
第四种:组合使用构造函数模式和原型模式
例6:
function Person(name,friends){ this.name="赵六"; this.friends=["张三","李四"];}Person.prototype.sayInfo=function(){ console.log(this.name+"的朋友有:"+this.friends);}var per6=new Person();var per7=new Person();per6.friends.push("王五");per6.sayInfo();//输出:赵六的朋友有:张三,李四,王五per7.sayInfo();//输出:赵六的朋友有:张三,李四
阅读全文
0 0
- JS 创建对象的几种方式
- js创建对象的几种方式
- JS 创建对象的几种方式
- js创建对象的几种方式
- JS创建对象的几种方式
- JS创建对象的几种方式
- JS创建对象的几种方式
- JS创建对象的几种方式
- js 创建对象的几种方式
- JS创建对象的几种方式
- js创建对象的几种方式
- JS创建对象的几种方式
- JS创建对象的几种方式
- JS创建对象的几种方式
- JS创建对象的几种方式
- JS 创建对象的几种方式
- JS创建对象的几种方式
- JS创建对象的几种方式
- PHP对数组求交集,差集,并集示例
- 【Codeforces Round #420 (Div. 2)】Codeforces 821ABCDE
- java synchronized关键字
- Rust: format!
- java 单例模式
- js 创建对象的几种方式
- java面试遇到的各种问题(不定期更新中~~)
- Linux 中断笔记
- intellij 出现“Usage of API documented as @since 1.6+”的解决办法
- bin/rails server 与 rails server 区别
- Codeforces 815A-Karen and Game
- jQuery中对数字进行加减乘除
- python2和python3同时在windows下pip的使用
- Linux(CentOS 7.3)下zip(压缩)命令的使用