2 sd3033539 sd3033539 于 2015.06.09 17:31 提问

在函数中写 this.xx=function 和 var xx =function() 的区别

亲问各位一个问题 JS代码如下
function Test(){
this.add = function(){
alert(1);
}

this.modAdd = function(){
    this.add();
    add(); 
    // 以上两种均无法调用到ADD方法  
    // Uncaught TypeError: this.add is not a function
}

}
var test = new Test()
test.modAdd();

请问我如何才通过 modAdd()方法调用函数内部本身的 add 方法?

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.09 17:34
已采纳
 function Test(){
this.add = function(){
alert(1);
}
var self = this;//定义一个变量指向对象this
this.modAdd = function(){
    self.add();
    // 以上两种均无法调用到ADD方法  
    // Uncaught TypeError: this.add is not a function
}
}
sd3033539
sd3033539 谢谢,我明白您的意思了, 等于在JS 编译过程中, this 刚好指向 TEST函数本身的时候, 将其存起来明白!感谢!
大约 3 年之前 回复
jimiyg1
jimiyg1 没有太大区别,都不能调用ADD方法。
大约 3 年之前 回复
longli1990
longli1990   2015.06.09 19:35

脚本会优先加载function xx(){}、变量方式声明则按顺序。这也是一个编码习惯问题。一船的应用中区别不大。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
js里声明函数有几种方式? var abc = function(x){} 和 function abc(x){} 这两种声明方法有什么不同?
先后者是指函数声明,前者是指函数表达式,他们之间的区别是后者会在代码执行之前被JS解释器加载到作用域中,这样一来就可以在编程时在定义函数之前调用这个函数,此法是有效的;而前者则是在代码执行到那一行时候才会有定义,此外函数表达式是创建了一个匿名函数,然后将匿名函数赋值给一个变量。
(function() {})();、XX=XX||{};的定义及作用!
最近做项目遇到了这个问题,顺便记录下来! 网上找了下资料理解理解,给出我的理解如下: 问题1: (function() {})():这function() {}表示的是一个匿名函数,而()则包裹着function() {},()表示的是拥有最高级的优先执行权,即会优先执行function() {}这个匿名函数。最后的(),则表示的是执行完function() {}后,立即调用这个func
JavaScript 中定义函数时用 var foo = function () {} 和 function foo() 的区别
作者:严肃 链接:https://www.zhihu.com/question/19878052/answer/32361868 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 这个问题其实非常好,最关键的区别在于JavaScript 函数和变量声明的“提前”(hoist)行为。 the Google style guide 建议我们采用方法一。
var tensquared=(function(x) {return x*x;}(10)); //这是一个函数表达式 问:为什么花括号后面还有一个(10)的?而且整个句子用()扩起来?这个是什么表
var tensquared=(function(x) {return x*x;}(10)); //这是一个函数表达式 问:为什么花括号后面还有一个(10)的?而且整个句子用()扩起来?这个是什么表示法? 首先我们来拆解这一行语句; 一、 var tensquared = xx; 这是赋值语句; 二、function (x){ return x*x; } 这是一个匿名函数;所
Javascript 两种 function 定义的本质区别
两种常见的function定义:1⃣️var func = function(){ ... }2⃣️func = function(){ ... }两种定义方式在表现形式上的不同:第一种var方式定义的函数,不能先调用,后声明;只能先声明,后调用。 第二种function方式定义函数可以先调用,后声明。(function($) { var a = 1; var b = 2;
js中(function(){})()的写法用处
以前看到老师写js的单例模式时疑惑为什么要这么写var singleton = (function () { var privateVariable; function privateFunction(x) { ...privateVariable... } return { firstMethod: function (a, b) {
javascript中this的深度剖析
JavaScript的this高级知识点,
再谈Javascript中function fn(){}和var fn=function(){}
用Javascript 两大特点,也是JS引擎的实现必然导致的: 1) 返回值。在JS引擎中,所有的语法,操作都有返回值,而且通常返回值是它本身或undefined。通常我们可以用"()"操作符,来获取当前句子的返回值(部分操作符不能用,如var)。例如:a=3;其实这行的返回值就是3,所以在a=b=3时,JS引擎就可以正确的执行下去,首先3赋值给b,然后当前的返回值3再赋值给a(而不是大家所认
foo:function(){}与function foo(){}还有foo=function()三者间的区别
首先要分清楚的是: 前者是自定义了一个名为foo的函数,而后者是定义了一个名为foo的属性,然后给这个属性赋了一个匿名函数(function就是这个匿名函数的定义)。‘ 因此我们可以分析了解到的其实前者是在任何地方都可以创建使用的,但是后者却只能在一个定义好的方法或者类中才行,因为其相当于定义的是一个属性。 而两者的区别在于,因为后者是定义了一个属性,
function a(){} 和 var a = function(){}的区别
今天看到一个js文件当中存在以下两种方法的声明function a(){ do something... }var a = function(){ do something... }查了一下这两种方式的区别,主要是如下a(); b();function a(){ do something... }var b = function(){ do something...