Javascript 如果名称与public方法相同,是否应以this.myPrivateMethod作为前缀?
我使用的模块模式如下:Javascript 如果名称与public方法相同,是否应以this.myPrivateMethod作为前缀?,javascript,jquery,Javascript,Jquery,我使用的模块模式如下: BLAH = ( function() { var someMethod = function(data) { }; return { someMethod: function(data) { this.someMethod(data); } } })(); 在公共方法中,使用这个引用内部函数是否是一种好的做法 这很重要还是只是让事情变得更清楚?这只是一种惯例,可以让代码更具可读性(不应该低估代码
BLAH = ( function() {
var someMethod = function(data) {
};
return {
someMethod: function(data) {
this.someMethod(data);
}
}
})();
在公共方法中,使用这个引用内部函数是否是一种好的做法
这很重要还是只是让事情变得更清楚?这只是一种惯例,可以让代码更具可读性(不应该低估代码的价值)。从功能的角度看,这没有什么区别 这只是一种惯例,使代码更具可读性(不应低估)。从功能的角度看,这没有什么区别 您的示例没有按预期工作。调用BLAH.someMethod()
时
someMethod: function(data) {
this.someMethod(data);
}
它将继续递归调用publicsomeMethod
,直到出现堆栈溢出
要访问私有函数,不应在其前面加上this.
。私有函数不是当前对象的属性。它仅在someMethod
的执行上下文中可用。您的示例未按预期工作。调用BLAH.someMethod()
时
someMethod: function(data) {
this.someMethod(data);
}
它将继续递归调用publicsomeMethod
,直到出现堆栈溢出
要访问私有函数,不应在其前面加上this.
。私有函数不是当前对象的属性。它仅在someMethod
的执行上下文中可用。为了更清楚,可以编写上述代码:
var Blah = (function(){
Blah = function() {
};
Blah.prototype.someMethod = function( data ){
...
}
return Blah;
)();
干杯 为了更清楚,可以编写上述代码:
var Blah = (function(){
Blah = function() {
};
Blah.prototype.someMethod = function( data ){
...
}
return Blah;
)();
干杯 就我个人而言,我不确定你从私人内部方法中获得了什么
这是我在我的项目中使用的模板,它基于jQuery如何完成它们的任务
(function ($, undefined) {
var MyObject = (function () {
var myObj = {},
_myInternalVariable = 'YAY';
//Internal method
function _internalMethod(){
};
//external variables
myObj.debug = false;
//version number
myObj.version = "1.0";
// Logs the message to the console, if it (the console) exists
myObj.log = function (msg) {
if (window.console && typeof console.log !== "undefined" && myObj.debug) {
console.log(msg);
}
};
return myObj;
})();
window.MyObject = window.MO = MyObject ;
})(jQuery);
就我个人而言,我不确定你从拥有私人内在方法中获得了什么
这是我在我的项目中使用的模板,它基于jQuery如何完成它们的任务
(function ($, undefined) {
var MyObject = (function () {
var myObj = {},
_myInternalVariable = 'YAY';
//Internal method
function _internalMethod(){
};
//external variables
myObj.debug = false;
//version number
myObj.version = "1.0";
// Logs the message to the console, if it (the console) exists
myObj.log = function (msg) {
if (window.console && typeof console.log !== "undefined" && myObj.debug) {
console.log(msg);
}
};
return myObj;
})();
window.MyObject = window.MO = MyObject ;
})(jQuery);
我不认为有任何其他方式可以引用“public”someMethod
。如果是我,我会将私有方法命名为\u someMethod
,消除混淆,因为该方法是私有的,除了你之外,没有人会看到“丑陋”的nbame。我认为yui的标准是两者兼而有之,这个._someMethod对吗?使用它来引用someMethod分配给的对象不是一个好主意,因为函数的这个值是通过调用设置的,所以如果函数不是以BLAH.someMethod()
的形式调用的,它可能不会引用分配给BLAH
的对象。我认为没有其他方法来引用这个对象“public”someMethod
。如果是我,我会将私有方法命名为\u someMethod
,消除混淆,因为该方法是私有的,所以除了你之外,没有人会看到“丑陋”“nbame。我认为yui的标准是两者兼而有之。someMethod对吗?使用它来引用someMethod分配给的对象不是一个好主意,因为函数的这个值是由调用设置的,所以如果函数不是以BLAH.someMethod()
的形式调用,它可能不会引用分配给BLAH
的对象。现在我很困惑,那么在发生名称冲突时如何引用该方法?您要引用哪个方法-私有方法还是公共方法?我要引用私有方法。我以为.someMethod将引用Blah对象中的var someMethod=函数(..)定义。@Blankman-您的示例引用的是public方法。下面是访问私有方法的方法<代码>返回{someMethod:function(){someMethod(data);}}
现在我很困惑,那么当出现名称冲突时,如何引用该方法?您要引用哪个方法-私有的还是公共的?我要引用私有的。我以为.someMethod将引用Blah对象中的var someMethod=函数(..)定义。@Blankman-您的示例引用的是public方法。下面是访问私有方法的方法<代码>返回{someMethod:function(){someMethod(数据);}}