javascript - 在 javascript 对象中, "static"函数和原型(prototype)函数是否共享相同的命名空间?

标签 javascript object scope

不管这种命名方案是否明智,以下是否有效?

var F = function() {
  this.f1 = function() {}
}
F.f1 = function() {}

// "static" call
var v1 = F.f1();

// prototype call
var f = new F();
var v2 = f.f1();

看起来应该没问题,因为例如,对象函数中的 varthis 变量不共享相同的空间。

最佳答案

是的,这是有效的。

在您的示例中,F 是一个函数,您为其分配一个名为 f1 的属性,该属性本身就是一个函数。如果将代码更改为 f = new F(),则 f 是一个继承自 F 原型(prototype)的对象,但它们仍然是两个不同的对象。

关于javascript - 在 javascript 对象中, "static"函数和原型(prototype)函数是否共享相同的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6773044/

相关文章:

C# foreach 变量作用域

javascript - 如何在 'use strict' 模式下跨多个 Node 模块访问我的对象数组作为数据存储?

JavaScript 范围问题 : variable not being identified

javascript - window.print 不打印 IE 11 表格中的所有分页数据

javascript - 如何在 Javascript 中定义串联?

javascript - ReactJs 如何在点击事件中更改按钮的图标?

scala - 在 scala 中返回 "object"

javascript - react : "react-scripts start" cannot find module webpack

javascript - 将对象的键分配为该对象内的值

javascript - 如何计算 JavaScript 中对象观察者的长度?