Javascript 为什么是';这';与obj.var不同

Javascript 为什么是';这';与obj.var不同,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我目前正在为jQuery编写一个可扩展插件。你可以看到插件 我的问题是针对第37行和第96行的: // Creates a Namespace hautD = {}; // A Basic Dropdown Constructor function hautD.HautForms = function(el, options) { // Overwrite default options // with user provided ones // and merge

我目前正在为jQuery编写一个可扩展插件。你可以看到插件

我的问题是针对第37行和第96行的:

// Creates a Namespace
hautD = {};

// A Basic Dropdown Constructor function
hautD.HautForms = function(el, options) {
    // Overwrite default options 
    // with user provided ones 
    // and merge them into "options". 
    var options = $.extend({}, defaults, options);
    if (el) {
        this.init(el, options);
    }
} 

switch(options.cornerType){
    default:
    // default = 'rounded'
    if(this.borderRadius){
        alert('woo hoo');   
    }
    break
}
()其中我有
这个.borderRadius
。当我为这个.borderRadius设置断点时,它是未定义的。因此,在Chrome Inspector中,我为“this”设置了一个watch表达式,它返回hautD.HautForms。如果我为
hautD.HautForms.borderRadius
设置了监视检查,则返回值为“true”

简而言之:为什么
this.borderRadius==undefined
hautD.HautForms.borderRadius==true
给定
this==hautD.HautForms

对不起,如果这个问题很复杂,这是我第一个真正的插件

这是一个特殊的关键字,在方法中用于引用 对其调用方法的对象

用于类对象内部访问成员变量

否则,您可以通过公共方法/变量从外部访问对象

在您的代码中,您可以在以下位置正确使用:

this.init(el, options);
因为它是内部的hautD.HautForms操作

您的代码应该如下所示:

hautD.HautForms = function(el, options) {
    // Overwrite default options 
    // with user provided ones 
    // and merge them into "options". 
    var options = $.extend({}, defaults, options);
    if (el) {
        this.init(el, options);
    }

    switch(options.cornerType) {
       // here you can use this.borderRadius instead of hautD.HautForms.borderRadius from outside
    }
} 

您应该在问题中包含代码的相关部分,而不仅仅是链接到源代码。如果链接有一天消失,它将提供一个引用。谢谢你的提示:)我理解这个概念,但是如果“this”返回对象,为什么this.var与object.var不一样?因为你不在同一个范围内好吧,这对我来说更有意义,你提供的代码符合我的要求。谢谢我会在它允许的时候接受答案。@Matthew:注意,
options
仍然不在
switch
语句的范围内。您是否打算将
switch
语句放在构造函数中?这对我来说似乎更有意义,然后
这个
也会起作用。@Felix-是的,我明白你的意思了。将开关移到构造函数中更有意义。然后我假设我会以Justin让我访问borderRadius变量的方式访问这些选项。谢谢你的建议。