2

我有这个代码,它正在工作。

var URL = new Object();

URL.pattern = /https?:\/\/([^\/]*)\//;
URL.current = window.location.href;

URL.getCurrent = function(){
  return this.current.match(this.pattern)[1];
};

var thisDomain = URL.getCurrent();

现在我想要将点符号放入对象中,我该怎么做?我试过这个,但是当我调用 URL.getCurrent() 时它显示未定义。

function URL(){

  this.pattern = /https?:\/\/([^\/]*)\//;
  this.current = window.location.href;

  this.getCurrent = function(){
    return this.current.match(this.pattern)[1];
  };
}

我希望有人可以帮助我。

4

5 回答 5

5

你能做的最简单的事情就是把它放在一个对象文字中。

http://jsfiddle.net/wJQb6/

var URL = {
    pattern: /https?:\/\/([^\/]*)\//,
    current: window.location.href,
    getCurrent: function () {
        return this.current.match(this.pattern)[1];
    }
}

alert(URL.getCurrent());​
于 2012-08-01T06:41:52.140 回答
2
function URL(){
  this.pattern = /https?:\/\/([^\/]*)\//;
  this.current = window.location.href;
  this.getCurrent = function(){
    return this.current.match(this.pattern)[1];
  };
}

有了这个,你有一个空的构造函数。该函数URL本身没有属性,您需要创建一个实例:

var url = new URL;
url.getCurrent();

但是,我建议使用以下包含继承的构造函数:

function URL(c){
    this.current = c;
}
URL.prototype.pattern = /https?:\/\/([^\/]*)\//;
URL.prototype.getCurrent = function(){
    return this.current.match(this.pattern)[1];
};

// Usage:

var url = new URL(window.location.href);
url.getCurrent();

如果你想要一个静态对象,只需使用对象文字:

var url = {
    pattern: /https?:\/\/([^\/]*)\//,
    current: window.location.href,
    getCurrent: function () {
        return this.current.match(this.pattern)[1];
    }
}

url.getCurrent();
于 2012-08-01T06:48:15.240 回答
1

您仍然需要实例化。

var url = new URL;
于 2012-08-01T06:40:39.287 回答
1

javascript 中没有静态方法,但您可以使用单例。

var URL=new function (){

  this.pattern = /https?:\/\/([^\/]*)\//;
  this.current = window.location.href;

  this.getCurrent = function(){
    return this.current.match(this.pattern)[1];
  };
};

这将允许您在需要时访问 URL 原型和构造函数。

于 2012-08-01T07:00:37.383 回答
0

如果你需要使用经典的 OOP 你可以这样做:

function URL(){
    /* constructor function */
}

URL.prototype.pattern = /https?:\/\/([^\/]*)\//;
URL.prototype.current = window.location.href;

URL.prototype.getCurrent = function(){
    return this.current.match(this.pattern)[1];
};

anURL = new URL();
var result = anURL.getCurrent();
于 2012-08-01T06:47:23.953 回答