近来在看JavaScript设想形式和开辟实践,内里说到”设想形式的主题老是把稳定的事物和变化的事物分脱离”,这就涉及到相识耦.耦合是一个很广泛的观点,在此只为记录在js中涌现的各种类型的耦合.
数据耦合:一个模块接见另一个模块时,彼此之间是经由过程简朴的数据参数(不是掌握参数/大众数据结构/外部变量)来交流输入输出信息的.网上搜到的诠释,不是很懂!
function create(id) {
var box = document.createElement('div');
box.setAttribute('id', id);
return box;
}
function append(id) {
var box = create(id);
document.body.appendChild(box);
}
此处的耦合是因为append函数接见了create函数.
解决方案:
create函数稳定,
function append(obj) {
document.body.appendChild(obj);
}
var box = create(id);
append(box);
掌握耦合:假如一个模块经由过程传送开关/标志/名字等掌握信息,明显地掌握挑选另一模块的功用,就是掌握耦合.网上搜到的诠释,不是很懂!
var y = 1;
function a(x) {
if (x) {
y = 1;
} else {
y = 0;
}
}
function b() {
if (y == 1) {
console.log('y is 1');
} else {
console.log('y is 0');
}
}
解决方案:
1.将被挪用模块内的剖断上移到挪用模块中举行
干掉var y = 1;和函数b
function a(x) {
if (x) {
console.log('y is 1');
} else {
console.log('y is 0');
}
}
2.被挪用模块分解成多少单一功用的模块
内容耦合:当一个模块直接修正或许操纵另一个模块的数据,或许直接转入另一个模块时,就发生了内容耦合.此时,被修正的模块完整依赖于修正它的模块.额额额,下面的例子和数据耦合的例子有啥差别???
function a() {
return 'kk';
}
function b() {
alert(a());
}
b();
解决方案:
a函数稳定
function b(p1) {
alert(p1);
}
b(a());
另有 标记耦合 非直接耦合 外部耦合 大众耦合,这些都没有在网上找到适宜的js的例子,愿望人人补充!