混合mixin函数_JS自定义混合Mixin函数示例

本文实例讲述了JS自定义混合Mixin函数。分享给大家供大家参考,具体如下:

/* 增加函数 */

function augment(receivingClass, givingClass) {

for(methodName in givingClass.prototype) {

if(!receivingClass.prototype[methodName]) {

receivingClass.prototype[methodName] = givingClass.prototype[methodName];

}

}

}

/* 改进的增加函数 */

function augment(receivingClass, givingClass) {

if(arguments[2]) { // Only give certain methods.

for(var i = 2, len = arguments.length; i < len; i++) {

receivingClass.prototype[arguments[i]] = givingClass.prototype[arguments[i]];

}

}

else { // Give all methods.

for(methodName in givingClass.prototype) {

if(!receivingClass.prototype[methodName]) {

receivingClass.prototype[methodName] = givingClass.prototype[methodName];

}

}

}

}

var Author = function Author(name, books) { // 构造函数

this.name = name;

this.books = books || 'default value';

};

Author.prototype = {

getName: function() {

return this.name;

},

getBooks: function() {

return this.books;

}

};

var Editor = function Editor() {

};

Editor.prototype = {

hello: function() {

return 'Hello,'+this.name;

}

};

augment(Author, Editor);

var author = new Author('Ross Harmes', ['JavaScript Design Patterns']);

console.log(author.getName());

console.log(author.getBooks());

console.log(author.hello());

经过拼接处理之后,author就获取到了hello方法了,属性还是自己的name。

相关标签:JS

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 中的 mixin 可以在组件中 hook Vue 的自定义方法,在方法执行完之后再进行一些处理。具体实现方式为,在 mixin 对象中定义一个与组件中自定义方法同名的方法,并在这个方法中调用组件中的自定义方法,并在 mixin定义一个 `afterHook` 函数来在自定义方法执行完之后进行处理。 例如,在组件中定义了一个 `myMethod` 方法,在这个方法执行完之后,我们需要执行一个 `afterMyMethod` 函数,在这个函数中进行一些处理。示例代码如下: ```javascript const myMixin = { methods: { myMethod() { console.log('myMixin myMethod'); this.$options.afterHook.myMethod.forEach(hook => hook.call(this)); }, afterMyMethod() { console.log('afterMyMethod'); } }, afterHook: { myMethod: [ function() { console.log('after myMethod'); } ] } }; export default { mixins: [myMixin], mounted() { this.myMethod(); }, methods: { myMethod() { console.log('component myMethod'); } } }; ``` 在上面的代码中,我们定义了一个 `myMixin` 对象,其中定义了一个与组件中自定义方法同名的 `myMethod` 方法和一个 `afterMyMethod` 方法,并在 `myMethod` 方法中通过 `this.$options.afterHook.myMethod` 来调用 `afterMyMethod` 函数,然后在 `afterMyMethod` 函数中进行一些处理。 在组件中,我们通过 `mixins` 选项和 `myMixin` 对象来引入 mixin,并在组件的 `mounted` 钩子函数中调用 `myMethod` 方法。同时,我们也在组件中定义了一个与 mixin 中同名的 `myMethod` 方法。 需要注意的是,在 mixin 中 hook 自定义方法时,需要注意 mixin 的执行顺序,因为 mixin 中的方法会在组件中的同名方法之前执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值