您的位置:首页 > 移动开发

js apply 结合 多态的应用

2017-06-18 00:00 441 查看
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<script src="./jquery.js"></script>
<script>

//  this指向外部数据.
Function.prototype.bind = function (context) {
var _self = this;
return function () {
// 修正this的指向问题.
return _self.apply(context, arguments);
}
}

/*
可以修正配置文件,其他的操作都是一致的, 只有配置项是不同的
*/

var nodes = {
root: '#root',
table: '#tb',

getRoot: function () {
console.log(this.root);
}
};

var nodes2 = {
root: '#root1',
table: '#tb1',

getRoot: function () {
console.log(this.root);
}
}

var Ppt = function () {
var root = this.root;
var tb = this.tb;

return {

getRoot: function () {
return root;
}
}

}.bind(nodes);

var Tables = function () {
var root = this.root;
var tb = this.tb;

return {
getRoot: function () {
return root;
}

}
}.bind(nodes2);

// 对象的多态处理,
function getRoot(objects)
{
return objects.getRoot();
}

//  不同的配置, 实现不同处理, 具体的处理逻辑由子类去修改处理,
console.log(getRoot(Ppt()));
console.log(getRoot(Tables()));

/*
使用场景 :  多个页面上需要不同的节点操作, 但是某些操作名称是一致的,
那么可以将需要操作的节点写成配置文件的形式,对数据进行封装处理,
通过 bind方法将配置对象与操作对象进行耦合处理,

在this的指向被调整后, 每个封装的对象是独立, 但是它们也具有共性, 此时使用多态去操作,
绑定一些事件, 对象节点进行增删处理, 或是样式上的调整.

也可以对操作对象进行抽象,在父类中触发行为上的操作, 不用关心子类的实现.

*/

</script>

</head>
<body>
<div id="a"></div>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js apply 多态