为什么是javascript函数.调用者等于这个函数
Why javascript Function.caller nequal to function this
function T()
{
var t = this;
function Hello()
{
alert(arguments.callee.caller == t);//false
alert(Hello.caller == t); //false
//this is a Object
//but caller just a Function.
//How?
}
Hello();
};
T();
//-------------------- 所以,我工作代码:但我不喜欢"属性(这)",所以……我需要像调用者对象。如何编码?
function property(owner)
{
var that = this;
this.def = function (name, setFunction, getFunction)
{
Object.defineProperty(owner, name, { set: setFunction, get: getFunction });
return that;
};
this.propg = function (name, value)
{
Object.defineProperty(owner, name,
{
set: function (value)
{
ErrorLog(name + "并没有实现属性设置器。");
}
, get: function ()
{
return value;
}
});
return that;
};
this.prop = function (name, value)
{
var fieldValue = value;
Object.defineProperty(owner, name,
{
set: function (value)
{
fieldValue = value;
}
, get: function ()
{
return fieldValue;
}
});
return that;
};
return that;
}
//#endregion
using('Sofire.Data', function ()
{
DataColumn = function (columnName, displayText)
{
var displayTextChanged = new EventObject();
property(this)
.def('DisplayTextChanged'
, function (value) { displayTextChanged.Add(value); }
, function () { return displayTextChanged; })
.propg('ColumnName', columnName)
.def('DisplayText'
, function (value)
{
displayText = value;
displayTextChanged.Raise();
}
, function () { return displayText; });
}
});
T
是一个FunctionDeclaration,而t
是输入T的ExecutionContext时产生的当前ActivationObject
。
您需要使用arguments.callee.caller == T
才能获得true
。
相关文章:
- JavaScript.call()函数“;这个“;值返回3
- Javascript函数和这个参数的一些问题
- 方法,函数,这个在javascript中
- Jquery相当于这个
- 为什么从对象调用函数在这个 for 循环中不起作用
- Jquery回调函数-“;这个“;
- 为什么 (函数('返回这个'))();返回全局
- 当这个函数得到这个参数时
- JavaScript等效于这个小PHP代码
- 是否可以访问封闭函数's这个或其他没有中间全局变量的变量
- 相当于这个curl请求的Node.js
- Angular $on函数使用这个关键字
- Angularjs通过ng-click函数访问这个元素
- Javascript reduce函数在这个对象上不起作用
- 相对于这个日期的前一周
- Javascript init函数因为这个关键字而中断
- 我如何使用Jquery's加载函数在这个js文件
- 为什么console.trace()的结果以一个“匿名函数”结束?这个函数是什么?
- 如果没有“函数”,这个对象方法定义如何工作?关键字
- 相当于这个Javascript