在不创建新对象的情况下调用公共函数
Calling a public function without creating a new object JS
我正在玩JS的"oop"(或者我应该说"pop" -面向原型的编程?),并试图做一些像静态方法和函数。我可以从原型对象中调用函数但这不是静态函数,对吧?
我有那个代码:
function a(val){
this.val = val;
console.log(this);
this.foo = function(){
console.log('hi');
}
}
我想调用foo函数而不创建新对象。这样的事情有可能发生吗?我该怎么做呢?
如果您试图模拟静态函数,则需要在创建"类"之后添加方法:
function A(val) {
this.val = val;
}
A.foo = function() {
console.log('hi');
}
那么您可以调用A.foo();
而不必使用原型。这很像Object.keys
的工作方式。这使得它成为函数的属性,而不是像静态函数那样是实例的属性。
如上所述,不实例化a
就不能调用foo
。
var a = {
foo: function() {
console.log('hi');
}
};
关于模拟静态函数,这是你能做到的最接近的:
function A(val) {
this.val = val;
console.log(this);
}
A.prototype.foo = function() { console.log('hi'); };
此时不需要实例化A来调用foo。
A.prototype.foo(); // 'hi'
相关文章:
- 是否可以在不更改上下文的情况下调用函数.apply
- Ajax:只在元素存在的情况下调用Ajax
- 可以“;超级“;可以在子类的方法内部使用,在不直接引用的情况下调用相应的超类方法
- typeaheadjs:如何在不使用缓存数据的情况下调用服务器
- 如何在没有 AJAX 的情况下调用上一页
- 是否可以在不加对象名称前缀的情况下调用对象的函数
- 谷歌应用程序脚本:如何在没有用户交互的情况下调用绑定到处理程序的函数
- Knockout:可以在没有参数的情况下调用可观察的扩展器
- Kinetic.js / Javascript:在不使用 eval() 的情况下调用变量作为属性
- 函数不't在添加括号的情况下调用它时运行(即使它不需要参数)
- 如何在不加载调用的页面的情况下调用 URL
- .js文件在不respond_to的情况下调用
- 在从服务器端 c# 使用 AJAX 进行部分渲染的情况下调用 javascript 函数
- 我可以在不使用 AJAX 的情况下调用 servlet URL 吗?
- 为什么我无法在以下情况下调用 javascript AJAX 函数
- 如何在没有 OnClick 事件的情况下调用 JavaScript 方法
- 在不使用.pipe()的情况下调用gulp-notify
- 如何在不加载的情况下调用函数
- Chrome JavaScript 开发者控制台:是否可以在没有换行符的情况下调用 console.log()
- 在打开 jQuery 的情况下调用多个函数.(“咔嚓”)