代码拉取完成,页面将自动刷新
var maintest3 = 1;
let maintest2 = 2;
var Class = {
create: function () {
return function () {
this.initialize.apply(this, arguments); //改变函数执行的上下文。区别:bind 是返回改变后的函数,不会立即执行。 apply call 可以传数组。
};
},
};
var DicApplyAdd_Scrap = Class.create(); //这里仅仅是返回了一个函数 。//= Innolux.Page.DicApplySelect_Scrap;;
//原型是条链?
// 抽象基类
DicApplyAdd_Scrap.prototype = {
//增加属性与方法。
initialize: function () {
//this.name = name;
// this.doSomething
console.log("被初始化了");
},
getName: function () {
// return this.name;
return "base class?";
},
doSomething: function () {
console.log("base class do somethin fn");
},
};
// strategys
let vendor_s = function () {
this.prototype.initialize.apply(this,arguments);//父类初始化。??
// when vendor is 被new时,函数变成了构造函数。this,此时this指向刚new的出来的。
this.doSomething = function () {
console.log("具体策略vendor做something");
};
};
let GW_s = function(){
this.prototype.initialize.apply(this,arguments);//父类初始化。??
// when vendor is 被new时,函数变成了构造函数。this,此时this指向刚new的出来的。
this.doSomething = function () {
console.log("具体策略GW做something");
};
};
vendor_s.prototype = Object.create(DicApplyAdd_Scrap);// 继承 dic。
GW_s.prototype = Object.create(DicApplyAdd_Scrap)
//context上下文
let Context = function () {
this.strategy = null;
};
Context.prototype = {
setStrategy: function (strategy) {
this.strategy = strategy;
},
exeStrategy: function (params) {
this.strategy.doSomething();
},
};
// 实例相关具体策略
const status_is_vendor = new vendor_s();
const status_is_GW = new GW_s();
status_is_vendor.doSomething();
status_is_GW.doSomething();
// status_is_GW.prototype.doSomething(); //还是默认的没有被改变。字面量?
const status_switch = new Context(); //必须new 下面才有setStrategy这个方法。
status_switch.setStrategy(status_is_vendor);
status_switch.exeStrategy();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。