向功能添加方法

ankush981

我是JavaScript的新手,正在学习JavaScript:The Good Parts一书在该书中,以下配方用于将方法扩展为所有功能:

Function.prototype.method = function (name, func) {
        this.prototype[name] = func;
        return this;
    }

我想探索这个概念,所以想出了以下脚本,旨在将greet()方法添加func()函数中:

//define how the augmentation will work
Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
}

//create a dummy function to augment
function func() {
    //do nothing
}

//create function to be added
func.method('greet', function() {
    console.log("Greetings from greet()!");
});

//access the new function
func.greet();

但是,当我运行它时,出现了错误Uncaught TypeError: undefined is not a function有人可以告诉我我在做什么错。

佛罗兹

在这种情况下,您要修改该行:

this.prototype[name] = func;

只是

this[name] = func;

演示:http//jsfiddle.net/s8aed1bx/1/

或者,您可以使用

this.constructor.prototype[name] = func;

但这会将每个新方法添加到每个函数中,而不仅仅是您调用method的方法。或者您可以使用:

var f2 = new func();
f2.greet();

为什么?

在JavaScript中查找对象的属性时,将搜索对象本身,然后搜索对象prototypeconstructorof(依此类推)。.constructorfuncFunction

在这种情况下,如果您写了以下内容,那么您所做的将可以工作:

func.method('greet', function() {
  console.log("Greetings from greet()!");
});
var f2 = new func();
f2.greet();

函数的原型用于该函数创建的新实例。(您创建的对象.constructor本身具有创建功能的一个。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ATL COM向Excel添加功能

来自分类Dev

如何向edmx添加功能

来自分类Dev

向swig生成的ruby模块添加功能的最佳方法是什么?

来自分类Dev

Javascript向对象添加功能

来自分类Dev

向Oracle添加许多(UDF)验证功能-哪种方法运行最快

来自分类Dev

向$ resource原型添加功能

来自分类Dev

是否向JavaScript日历添加功能?

来自分类Dev

向集成流程添加批处理功能

来自分类Dev

向功能添加方法

来自分类Dev

向FOR任务添加并行功能

来自分类Dev

向Sklearn分类器添加功能

来自分类Dev

在socket.io中向套接字添加功能的首选方法是哪种?

来自分类Dev

向自定义控件添加功能

来自分类Dev

如何向Spring Cloud Bootstrap添加功能

来自分类Dev

向滑块添加暂停功能

来自分类Dev

向CountVectorizer矩阵添加其他功能

来自分类Dev

向对象添加方法

来自分类Dev

在不更改名称的情况下向父类方法添加额外的功能

来自分类Dev

Openlayers 3:向功能添加文本标签

来自分类Dev

有没有一种方法可以向NavigationLink添加额外的功能?SwiftUI

来自分类Dev

向滑块添加缩放功能

来自分类Dev

覆盖方法以向其添加功能

来自分类Dev

向类添加功能

来自分类Dev

向Python Shell添加功能

来自分类Dev

使用GitHub向项目添加新功能的最佳方法

来自分类Dev

使用Keras中的功能性API向GRU模型添加掩膜层的正确方法?

来自分类Dev

向$ resource原型添加功能

来自分类Dev

向jQuery元素添加功能

来自分类Dev

向类添加方法