创建Javascript对象的途径/方式
/* Tips: JS中所有的对象实例都是Object的实例,即:ins instanceof Object == true,ins包括window/Sring/Array等对象的实例,以及自定义对象的实例
只有在window对象下,this关键字等于window,在其他对象中,this == [object Object](有待商榷)
this关键字总是指向调用this关键词的方法所属的对象的实例 */
1、通过Object对象实例化,然后在外部添加属性/方法(原始模式)
var obj = new Object(); obj.v = ''; obj.func = function() { //... }
2、通过构造函数实例化,然后在外部通过prototype添加属性,或者在构造函数里面直接定义属性
(只在外部定义属性,是原型模式,只在内部定义属性,为构造函数模式,内外都定义,即混合原型/构造函数模式)
//原型模式 function obj() { } obj.v = ''; obj.prototype.v2 = ''; var instance = new obj();
//构造函数模式 function obj() { this.v = ''; this.func = function() { //... } } var instance = new obj();
//混合原型/构造函数模式 function obj() { this.v = ''; this.func = function() { //... } } obj.prototype.v2 = ''; obj.prototype.func2 = function() { //... } var instance = new obj();
3、通过JSON方式,使用对象字面量,直接在里面定义属性(呃,确切的说,我不知道这么方式怎么来的,我还没搞懂“字面量”)
//对象字面量创建的对象属于Object对象的一个实例,本身就是对象实例,所以不能再实例化 var obj = { v : '', func : function() { //... } }
4、定义一个函数,在函数里面通过方式1定义对象,最后返回对象变量
(外部调用函数时,函数名前加new关键字即为混合工厂模式,不加new,即工厂模式)
function getObj() { var obj = new Object(); obj.v = ''; obj.func = function() { //... } return obj; } //工厂模式 var obj = getObj(); //混合工厂模式 var obj = new getObj();优质内容筛选与推荐>>