We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
参考: JavaScript深入之创建对象的多种方式以及优缺点 ,by 冴羽,《JavaScript高级程序设计》
用函数来封装以特定接口创建对象的细节。需要返回一个对象
function createObj (name) { var o = new Object(); o.name = name; o.getName = function () { console.log(this.name); }; return o } var person = createObj ('AngellinaZ')
缺点: 能无数次创建相似的对象,无法识别对象,每一个实例都指向同一个原型(不知道是谁家孩子)
function CreateObj (name) { this.name = name; this.getName = function () { console.log(this.name); } } var person = new CreateObj ('AngellinaZ')
构造函数首字母大写
调用new会:
优点: 实例可以识别为一个特定的类型,实例对象中,都有一个constructor属性(解决谁家孩子问题) 缺点: 创建功能一样的函数
function Person(name) { } Person.prototype.name = 'keivn'; Person.prototype.getName = function () { console.log(this.name); }; var person1 = new Person();
优点:方法不会重新创建 缺点:1. 所有的属性和方法都共享 2. 不能初始化参数
function Person(name) { } Person.prototype = { constructor: Person, name: 'kevin', getName: function () { console.log(this.name); } }; var person1 = new Person();
优点: 实例可以通过constructor属性找到所属构造函数 缺点: 1. 所有的属性和方法都共享 2. 不能初始化参数
构造函数模式 用于定义实力属性,原型模式用于定义方法和共享的属性。
function Person(name) { this.name = name; } Person.prototype = { constructor: Person, getName: function () { console.log(this.name); } }; var person1 = new Person();
优点:该共享的共享,该私有的私有,使用最广泛的方式 缺点:有的人就是希望全部都写在一起,即更好的封装性
The text was updated successfully, but these errors were encountered:
No branches or pull requests
参考: JavaScript深入之创建对象的多种方式以及优缺点 ,by 冴羽,《JavaScript高级程序设计》
1. 工厂模式
用函数来封装以特定接口创建对象的细节。需要返回一个对象
缺点: 能无数次创建相似的对象,无法识别对象,每一个实例都指向同一个原型(不知道是谁家孩子)
2. 构造函数模式
构造函数首字母大写
调用new会:
优点: 实例可以识别为一个特定的类型,实例对象中,都有一个constructor属性(解决谁家孩子问题)
缺点: 创建功能一样的函数
3. 原型模式
优点:方法不会重新创建
缺点:1. 所有的属性和方法都共享 2. 不能初始化参数
3.1 原型模式优化
优点: 实例可以通过constructor属性找到所属构造函数
缺点: 1. 所有的属性和方法都共享 2. 不能初始化参数
4. 组合模式
构造函数模式 用于定义实力属性,原型模式用于定义方法和共享的属性。
优点:该共享的共享,该私有的私有,使用最广泛的方式
缺点:有的人就是希望全部都写在一起,即更好的封装性
The text was updated successfully, but these errors were encountered: