Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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 - Fatal编程技术网

Javascript原型-不仅适用于实例对象?

Javascript原型-不仅适用于实例对象?,javascript,Javascript,原型在整个JavaScript中都被用作一种方便的定义方法 将自动应用于的实例的属性和功能 对象 所以如果我写下这个: function Ninja(){} Ninja.prototype.swingSword = function(){ return true; }; var ninja1 = Ninja(); 然后,所有忍者都会有这个方法 但是如果只是针对实例对象,为什么下面的代码可以工作 Object.prototype.test1=function (){alert(this)

原型在整个JavaScript中都被用作一种方便的定义方法 将自动应用于的实例的属性和功能 对象

所以如果我写下这个:

function Ninja(){} 
Ninja.prototype.swingSword = function(){ 
return true;
};

var ninja1 = Ninja(); 
然后,所有忍者都会有这个方法

但是如果只是针对实例对象,为什么下面的代码可以工作

Object.prototype.test1=function (){alert(this);};
Object.test1();
对象是普通对象,而不是实例对象

问题:

  • 似乎原型也适用于非实例对象的方法

我在mdn中找不到任何关于该确切行为的解释。

当您扩展
对象的原型时,您添加的属性可用于所有对象,因为它是所有JS对象的根:

Object.prototype.test1 = function(){ console.log('test1') };
({}).test1(); // logs test1
(new Image()).test1(); // logs test1

和所有构造函数一样,
对象
,也是一个函数。JavaScript中的函数是一个对象

扩展
对象的原型时,添加的属性可用于所有对象,因为它是所有JS对象的根:

Object.prototype.test1 = function(){ console.log('test1') };
({}).test1(); // logs test1
(new Image()).test1(); // logs test1

和所有构造函数一样,
对象
,也是一个函数。JavaScript中的函数是一个对象

扩展
对象的原型时,添加的属性可用于所有对象,因为它是所有JS对象的根:

Object.prototype.test1 = function(){ console.log('test1') };
({}).test1(); // logs test1
(new Image()).test1(); // logs test1

和所有构造函数一样,
对象
,也是一个函数。JavaScript中的函数是一个对象

扩展
对象的原型时,添加的属性可用于所有对象,因为它是所有JS对象的根:

Object.prototype.test1 = function(){ console.log('test1') };
({}).test1(); // logs test1
(new Image()).test1(); // logs test1

和所有构造函数一样,
对象
,也是一个函数。JavaScript中的函数是一个对象

一般来说,这不起作用。您的代码可以工作,因为您将函数添加到
对象
原型,而
对象
是函数,即
函数
的实例,而“function.prototype”是
对象
的实例,通常这不起作用。您的代码可以工作,因为您将函数添加到
对象
原型,而
对象
是函数,即
函数
的实例,而“function.prototype”是
对象
的实例,通常这不起作用。您的代码可以工作,因为您将函数添加到
对象
原型,而
对象
是函数,即
函数
的实例,而“function.prototype”是
对象
的实例,通常这不起作用。您的代码可以工作,因为您向
对象
原型添加了函数,
对象
是函数,即
函数
的实例,“Function.prototype”是
Object

的一个实例,如果尝试使用其他构造函数,除了
Object
Function
之外,如果是这样的话-你能告诉我-为什么在这一个中我看不到警报,而在一个中-我确实看到了警报?如果我通过新建一个函数来创建一个实例-它应该转到function.prototype…否?如果尝试使用除
Object
function
之外的其他构造函数,如果是这样-你能告诉我-为什么我在其中没有看到警报,而在其中-我确实看到了警报?如果我通过新建一个函数来创建一个实例-它应该转到function.prototype…否?如果尝试使用除
Object
function
之外的其他构造函数,如果是这样-你能告诉我-为什么我在其中没有看到警报,而在其中-我确实看到了警报?如果我通过新建一个函数来创建一个实例-它应该转到function.prototype…否?如果尝试使用除
Object
function
之外的其他构造函数,如果是这样-你能告诉我-为什么我在其中没有看到警报,而在其中-我确实看到了警报?如果我通过新建一个函数来创建一个实例-它应该转到function.prototype…否?如果没有其他人这样做,我会在有时间时尝试将其扩展为一个答案,但您有两个不同的属性。函数有一个
prototype
属性,当使用
new
调用函数时使用该属性;所有对象都有一个内部的
[[Prototype]]
属性,这是用来查找属性的。如果没有其他人这样做,我会在有时间时尝试将其扩展为一个答案,但您有两个不同的属性。函数有一个
prototype
属性,当使用
new
调用函数时使用该属性;所有对象都有一个内部的
[[Prototype]]
属性,这是用来查找属性的。如果没有其他人这样做,我会在有时间时尝试将其扩展为一个答案,但您有两个不同的属性。函数有一个
prototype
属性,当使用
new
调用函数时使用该属性;所有对象都有一个内部的
[[Prototype]]
属性,这是用来查找属性的。如果没有其他人这样做,我会在有时间时尝试将其扩展为一个答案,但您有两个不同的属性。函数有一个
prototype
属性,当使用
new
调用函数时使用该属性;所有对象都有一个内部
[[Prototype]]
属性,用于查找属性。