普通函数和对象内部函数的区别是什么?
what is the difference between normal function and a function inside an object
JavaScript中普通函数和对象内部函数的区别是什么?哪一个是最好的,这两个是如何工作的?
我的意思是这样的:
var a={
funct:function(){
// ...
}
}
a.funct();
function funct() {
// ...
}
funct();
嗯,它们之间没有太大的区别。
通常将附属于对象的函数称为方法。公平地说,全局函数被附加到全局对象(窗口)上,所以它可以被认为是全局对象的一个方法(想想alert
,实际上是window.alert
)。
不是所有的函数都附属于对象,你可以像拥有局部变量一样拥有局部函数。
function f () {
var x = 12;
var log = function (value) { console.log(value); };
log(x);
}
它们之间的一个重要区别是this
的值,这是一个在调用函数时传递给函数的伪参数,无论它们是否是方法。如果函数链接到一个对象,this
将在使用方法语法调用时指向相应的对象:
var myObject = {
name: 'Joe',
myFunc: function () { console.log(this.name); }
};
myObject.myFunc(); // will receive myObject as this and therefore will print "Joe"
然而,一个"正常"的函数要么接收全局对象(window),要么接收未定义的,这取决于你是否使用严格模式(默认情况下你没有,所以this将指向window)。
function f () { console.log(this.constructor); }
f(); // function Window()
关于this
值的另一个答案可以在这里找到(完全披露:我也是那个答案的作者)
我不认为有不同,所有的函数都在一个对象内,从根窗口对象开始。我通常在对象中使用函数,只是为了使我的代码更有组织,更易读,并使用'this'来访问当前的对象属性,这就是全部。
"对象内部的函数"称为"方法"。它的关键区别在于它可以使用this
访问对象内部的其他属性。因此,它通常用于从对象中操作或检索数据。
相反,对象外部的函数通常被设计为在任何特定上下文之外独立工作。
正如评论者很快指出的那样,上面的内容相当简单。我怀疑这是否是一个关于this
更深层次含义的扩展教程的合适论坛,或者如何调用具有替代上下文的函数,或者在对象内部拥有独立于该对象上下文的函数。
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 在ng重复循环中显示条件内容的最佳方式是什么
- 我的客户端选项是什么
- 这是什么“;要求“;事情
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- @@(“at at”)在ES6 JavaScript中是什么意思
- knex:根据结果创建数组的合适方法是什么
- emu -model、emu -restless和emu之间的主要区别(优缺点)是什么?
- function()在jQuery中是什么意思?这个和$(这个)有什么区别