例如,使用Google Chrome Developer工具的javascript控制台,可以检查像Math这样的全局对象。
您可以在控制台中简单地编写Math,然后返回。 您将能够访问所有属性,如E,PI和abs,ceil等方法。
String也是像Math这样的全局对象,但是如果你尝试相同的操作,javascript吊牌输出会有所不同,你将无法看到属性和方法。
要查看字符串的属性和方法,您需要制作类似的内容。
var c = new String("asd")
然后检查c objet。
所以我的问题是,你能举例说明一个非常简单的对象,实现为String,然后是Math?
答案 0 :(得分:1)
在常规OO Math中,它将被视为Static
类,只有一个实例。 String将是一个普通的类,您可以在其中创建多个实例。
至于javascript;你可以使用值作为函数创建一个对象:
var Calc = {
Addition : function(a,b)
{
return a+b;
}
}
您可以调用Calc.Addition(1,2)并返回3。
在另一个示例中,您必须首先实例化对象,您可以使用以下内容:
var Person = function(name)
{
this.Name = name;
this.Walk = function()
{
console.log(this.Name + " is walking");
}
}
var p = new Person("AntonJS");
在您的控制台日志中,您会看到p有一个名为Name的属性,以及一个名为Walk的函数。
答案 1 :(得分:1)
差异是本机类型:
typeof(new String("asd")) // 'object'
typeof("asd") // 'string'
但
(new String("asd")).constructor.name // String
"asd".constructor.name // String
String对象的属性和方法由ECMA-262(Javascript标准)的标准实现,并由当前的javascript引擎扩展。你可以在String对象的String.prototype对象定义中看到如上所述。
编辑:现在我更好地抓住你的问题了。 Math是一个抽象对象,“asdf”是字符串的实例。
var MockMath = {
'sin' : function(){
}
,'cos' : function(){
}
/* ... */
};
var MockString = function() {
/* ... */
};
MockString.prototype = {
'split' : function() {
}
,'toLowerCase' : function() {
}
,'toUpperCase' : function() {
}
};
console.debug(new MockString("asdf"));
console.debug(MockMath);