Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript如何创建对象?_Javascript_Prototype - Fatal编程技术网

javascript如何创建对象?

javascript如何创建对象?,javascript,prototype,Javascript,Prototype,有人告诉我上述代码等于: function Person(name) { this.name = name; this.say = function() { console.info('I am ' + this.name); } } var p=new Person('stackoverflow'); 这是真的吗 如果是的话,原型怎么样 javascripte中的每个对象都拥有一个原型,原型链保持着obejcts的相关性,我想知道这个原型是否有作用 在

有人告诉我上述代码等于:

function Person(name) {
    this.name = name;
    this.say = function() {
        console.info('I am ' + this.name);
    }
}
var p=new Person('stackoverflow');
这是真的吗

如果是的话,原型怎么样

javascripte中的每个对象都拥有一个原型,原型链保持着obejcts的相关性,我想知道这个原型是否有作用

在本例中,当创建“p”的对象时,它是否调用Person超类的某个内置方法

顺便说一句,我想知道的是语法
var p=newperson('stackoverflow')做什么


-----------------更新------------------

如果我把say的定义放在person函数中,怎么样

function Person(name) {
    this.name = name;
}
Person.prototype.say = function() {
    console.info('I am ' + this.name);
}
Person.call(p,'stackoverflow');
守则:

function Person(name) {
    this.name = name;
    Person.prototype.say = function() {
        console.info('I am ' + this.name);
    }
}
创建Person类的新实例。您必须记住,javascript中的类是函数,因此在调用时:

var p=new Person('stackoverflow');
您只需调用Person函数并将其绑定到p对象(这意味着在函数上下文中,
this
将引用p对象)。这些代码片段做同样的事情,除了第一个是类的实例,因此如果更新person的原型对象,其属性将被更新

无论如何,填充Person函数的原型对象时情况不同:

function Person(name) {
    this.name = name;
}
Person.prototype.say = function() {
    console.info('I am ' + this.name);
}
Person.call(p,'stackoverflow');
如果在Person函数声明之后添加此项,您将看到这些代码段具有不同的行为。用“new”初始化的对象将包含test属性,但另一个对象没有。这是因为当使用“new”时,prototype对象仅应用于类的实例

Person.prototype={test:"test"}
相当于:

var p=new Person('stackoverflow');
除了
\uuuu proto\uuuu
不是标准的JavaScript(但受
一些实现)。

也就是说,第一个p拥有Person的原型?是的,因为它是Person的实例,Person原型的每个属性都应用于对象。添加
Person.prototype={test:“test”}和测试,您会看到区别。谢谢,我测试了它,现在我知道了。:)顺便问一下,eclipse中有没有可以直接独立运行javascript的插件?