使用单例模式的局限性,就是每次创建一个对象,里面的属性都会重复定义。
var jsPerson1 = {
name: 'zhangsan',
age: 48,
writeJs: function () {
console.log('my name is ' + this.name + ', age is ' + this.age);
}
};
jsPerson1.writeJs();
var jsPerson2 = { /* 重复定义部分 */};
单例模式虽然解决了分组的作用,但是不能实现批量的生产,属于手工作业模式,这就引出了"工厂模式"。
把实现同一件事情的相同的代码,放到一个函数中,以后如果再想实现这个功能,就不需要重新的编写这些代码了,只需要执行当前的函数即可 --> "函数的封装" --> "低耦合高内聚": 减少页面中的冗余代码,提高代码的重复利用率。
function createJsPerson(name, age) {
var obj = {};
obj.name = name;
obj.age = age;
obj.writeJs = function () {
console.log('my name is ' + this.name + ', age is ' + this.age);
}
return obj;
}
var p1 = createJsPerson('zhangsan', 48);
p1.writeJs();
var p2 = createJsPerson('lisi', 20);
p2.writeJs();
JavaScript中不存在重载,如果方法名一样,后面的会把前面的覆盖,最后只保留一个。
JavaScript中有一个操作类似重载但不是重载: 可以根据传递参数的不一样,实现不同的功能。
function sum(num) {
if (typeof num === 'undefined') {
return 0;
}
return num;
}
sum(100);
sum();
网友评论