JavaScript学习笔记之创建对象
来源:互联网 发布:印度人是黄种人吗 知乎 编辑:程序博客网 时间:2024/05/01 17:06
一、创建自定义对象最简单的方式就是创建一个object实例,然后为它添加属性和方法。
var person=new Object();person.name="John";person.age=20;person.sayName=function(){ alert(this.name);};
二、通过对象字面量进行定义。
var person={ name:"John", age:20, sayName:function(){ alert(this.name); }};
三、工厂模式
function createPerson(name,age){ var o=new Object(); o.name=name; o.age=age; o.sayName=function(){ alert(this.name); }; return o;}var person1=createPerson("John",20);var person2=createPerson("Mike",25);优点:解决了创建 多个相似对象的问题
缺点:无法知道一个对象实例的具体类型
四、构造函数模式
function Person(name,age){ this.name=name; this.age=age; this.sayName=function(){ alert(this.name); };}var person1=new Person("John",20);var person2=new Person("Mike",25);优点:较之工厂模式,可以识别对象的具体类型(instanceof)。
缺点:每个方法都要在每个实例上重新创建一遍,每个Person实例都包含一个不同的function实例(函数的作用域链和标识符解析都不同),无法实现方法的共享。
五、原型模式
function Person(){}Person.prototype.name="John";Person.prototype.age=20;Person.prototype.sayName=function(){ alert(this.name);};var person1=new Person();person1.sayName(); //"John"var person2=new Person();person2.sayName(); //"John"alert(person1.sayName==person2.sayName); //true
更简单的原型模式
function Person(){}Person.prototype={ constructor:Person, name:"John", age:20, sayName:function(){ alert(this.name); }};优点:可以让所有对象实例共享它所包含的属性和方法。
缺点:无法拥有独立的引用类型属性。没有为构造函数传递初始化参数,使得所有实例在默认情况下都取得相同的属性值。
六、组合使用构造函数模式和原型模式
function Person(name,age){ this.name=name; this.age=age; this.friends=["Kevin","Jason"];}Person.prototype={ constructor:Person, sayName:function(){ alert(this.name); }};var person1=new Person("John",20);var person2=new Person("Mike",25);person1.friends.push("Van");alert(person1.friends); //"Kevin,Jason,Van"alert(person2.friends); //"Kevin,Jason"alert(person1.sayName===person2.sayName); //true
这是定义应用类型的一种默认模式。
0 0
- JavaScript学习笔记之创建对象
- JavaScript学习笔记6 面向对象之创建对象
- javascript创建对象学习笔记
- 学习笔记之JavaScript对象的创建方法
- JavaScript学习笔记之对象
- JavaScript学习笔记,创建对象,属性访问
- JavaScript学习笔记二十一:创建对象
- JavaScript学习笔记-02对象创建方式
- javascript学习篇之对象和数组创建等基础知识代码笔记
- JavaScript学习笔记之浅析几种创建对象的方法
- javascript学习笔记三之js对象
- JavaScript学习笔记之对象属性
- JavaScript学习笔记之事件对象
- JavaScript学习笔记之自定义对象
- JavaScript学习笔记之对象及继承
- JavaScript学习笔记之面向对象编程
- JavaScript之创建对象
- JavaScript之创建对象
- Android源代码 之 源代码分支、版本号、支持设备列表
- MyEclipse下载地址
- 欢迎使用CSDN-markdown编辑器
- [MySQL监控]MySQL监控配置模板及各监控项解释
- 【高级java程序员应该知道的小知识】 volatile
- JavaScript学习笔记之创建对象
- JavaScript学习笔记之继承
- Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf
- 轻松互联网开发平台(Easy Do IT,原WebEasy)升级预告
- 西安
- 【高级java程序员应该知道的小知识】 WeakHashMap
- 【高级java程序员应该知道的小知识】weak reference
- android设置缺省的异常捕获器
- 【VR】Leap Motion 官网文档 HandController(手部控制器)