Javascript中创建函数的几种方法
2019-06-04 14:02
1856 查看
// 工厂函数模式 // 无法解决对象识别问题 function person0(name, age, job) { var obj = new Object(); obj.name = name; obj.age = age; obj.job = job; return obj; } // --------------------------------------------------- // 构造函数模式 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; // 这个方法实例化时,会创建两次 this.sayName = function() { alert(this.name); }; } const person1 = new Person("test1", 19, "pig"); const person2 = new Person("test2", 19, "dog"); // --------------------------------------------------- // 原型模式 // 初始化时无法自定义属性 function Person1() {} Person1.prototype.name = "looyulong"; Person1.prototype.age = age; Person1.prototype.job = job; Person1.sayName = function() { alert(this.name); }; // --------------------------------------------------- // 组合构造函数模式 // 构造函数定义属性,原型模式定义方法 function Per(name, age, job) { this.name = name; this.age = age; this.job = job; } Per.prototype = { constructor: Per, sayName: function() { alert(this.name); } }; const per1 = new Per("test1", 19, "pig"); const per2 = new Per("test2", 19, "dog"); // --------------------------------------------------- // 动态构造模式 // 就是加了一个判断,判断原型上面是否有对应的方法 function Person2(name, age, job) { this.name = name; this.age = age; this.job = job; if (typeof this.sayName !== "function") { Person2.prototype.sayName = function() { alert(this.name); }; } } // --------------------------------------------------- // 寄生构造函数模式 // 在构造函数的内部返回一个对象,也就是new的时候返回一个对象 // 与工厂函数其实没有很大区别,只是在写法上,工厂函数创建对象需要执行一个函数 // 通过这种模式,可以达到和工厂函数相同的效果,但是却是用new操作符调用的 function Person3(name, age, job) { var obj = new Object(); obj.name = name; obj.age = age; obj.job = job; obj.sayName = function() { alert(this.name); alert(obj.name); }; return obj; } // --------------------------------------------------- // 稳妥构造函数模式 // 没有公共属性,没有公共属性,不用this // 因为有些环境无法是用this和new function Person4(name, age, job) { var obj = new Object(); obj.getName = function() { return name; }; obj.getAge = function() { return age; }; obj.getJob = function() { return job; }; obj.sayName = function() { alert(name); }; return obj; }
相关文章推荐
- javascript中创建对象的几种方法总结
- isArray()函数(JavaScript中对象类型判断的几种方法)
- Javascript创建对象几种方法解析
- Javascript对象学习1 - 创建对象的几种方法
- JavaScript创建函数的几种方式
- javascript 高级——几种对象创建方法
- 创建健壮的isArray()函数(JavaScript中判断对象类型的种种方法)[转]
- isArray()函数(JavaScript中对象类型判断的几种方法)
- JavaScript学习笔记之浅析几种创建对象的方法
- javascript创建函数的方法
- JavaScript中创建类/对象的几种方法总结
- JavaScript对象创建的几种方式及使用方法
- javascript 高级——几种对象创建方法
- JavaScript 中需要创建函数的方法
- JS中创建函数的几种方法
- Javascript中创建对象的几种方法
- 创建健壮的isArray()函数(JavaScript中判断对象类型的种种方法)
- JavaScript中常见的几种创建对象的方式:基于对象扩充属性和方法、基于工厂方式创建对象、基于构造函数和基于原型
- javascript 动态创建标记的几种方法
- JavaScript中OnLoad几种使用方法,onload 后面执行的函数不能加括号 加了就立即执行。