Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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,我认为这是凌晨5点的人才流失,但我在理解这一点上遇到了困难 obj = ['a','b']; alert( obj.prototype ); //returns "undefined" 为什么obj.prototype不返回函数数组{}作为原型?它确实引用数组作为构造函数。我并不喜欢它,但这种定义它的方式是否使obj成为数组? 尝试 ?这不是我真正喜欢的,但这种定义它的方式是否使obj成为一个数组? 尝试 ?因为实例没有原型,所以类*有原型 您可能需要obj.constructor.proto

我认为这是凌晨5点的人才流失,但我在理解这一点上遇到了困难

obj = ['a','b'];
alert( obj.prototype ); //returns "undefined"

为什么obj.prototype不返回函数数组{}作为原型?它确实引用数组作为构造函数。

我并不喜欢它,但这种定义它的方式是否使obj成为数组? 尝试


这不是我真正喜欢的,但这种定义它的方式是否使obj成为一个数组? 尝试


因为实例没有原型,所以类*有原型

您可能需要obj.constructor.prototype或obj.constructor==数组


*更准确地说,构造函数有原型,但当然在JS functions=classes=constructors中,因为实例没有原型,所以类*有原型

您可能需要obj.constructor.prototype或obj.constructor==数组


*更准确地说,构造函数有原型,但当然在JS functions=classes=constructors中,我不确定您是否可以从对象的实例访问原型对象。以下行为可能对您有所帮助:

alert(Array); // displays "function Array() { [native code] }"
alert(Array.prototype); // displays ""
alert(['a','b'].constructor); // displays "function Array() { [native code] }"

obj.prototype没有返回函数数组{…},因为它是对象的构造函数。

我不确定您是否可以从对象的实例访问prototype对象。以下行为可能对您有所帮助:

alert(Array); // displays "function Array() { [native code] }"
alert(Array.prototype); // displays ""
alert(['a','b'].constructor); // displays "function Array() { [native code] }"
prototype没有返回函数数组{…},因为它是对象的构造函数。

在您的示例中,obj是数组的实例,而不是类数组本身

另一种理解方法是,例如,您不能从对象或类的实例继承,只能从对象或类本身继承,在您的示例中,这意味着您可以从数组对象继承,但不能从数组对象的直接实例(如obj)继承。

在您的示例中,obj是数组的实例,而不是类数组本身


另一种理解方法是,例如,您不能从对象或类的实例继承,只能从对象或类本身继承,在您的示例中,这意味着您可以从数组对象继承,但不能从数组对象的直接实例(如obj)继承。

根据ECMA规范,对象的原型链接不可见,但大多数现代浏览器firefox、safari、chrome都允许您通过_proto_______________________________

obj = ['a','b'];
alert( obj.__proto__ );
对象在构造时还设置了“constructor”属性,因此您可以尝试:

obj = ['a','b'];
alert( obj.constructor.prototype );

但是,对象构造后可以更改obj.constructor,obj.constructor.prototype也可以更改,而无需更改obj的实际原型指针。

根据ECMA规范,对象的原型链接不可见,但大多数现代浏览器firefox、safari、chrome都允许您通过u proto_u_u_u属性查看它,因此请尝试:

obj = ['a','b'];
alert( obj.__proto__ );
对象在构造时还设置了“constructor”属性,因此您可以尝试:

obj = ['a','b'];
alert( obj.constructor.prototype );

但是,对象构造后可以更改obj.constructor,obj.constructor.prototype也可以更改,而无需更改obj的实际原型指针。

Nah,也不是这样。警报obj.constructor.prototype;返回nothing.no,它返回prototype.toString-注意这不是null,与returnign nothing不同-这是正确的引用,您使用它所做的可能不正确,所以我认为我理解。所以obj='a',obj={a:'a'},obj=['a'],obj=0没有原型,因为它们是实例。但是,obj=function{}为它的原型返回[object object],因为函数是一个构造函数,所以它有一个原型-函数基本上是唯一可以得到原型引用的东西,无论它们是本机函数还是您自己的长话短说-函数在JS:DNah中是特殊的,这也不是。警报obj.constructor.prototype;返回nothing.no,它返回prototype.toString-注意这不是null,与returnign nothing不同-这是正确的引用,您使用它所做的可能不正确,所以我认为我理解。所以obj='a',obj={a:'a'},obj=['a'],obj=0没有原型,因为它们是实例。但是,obj=function{}为其原型返回[object object],因为函数是一个构造函数,所以它有一个原型-函数基本上是唯一可以获得原型引用的东西,无论是本机函数还是您自己的长话短说-函数在JS:DTried中也很特殊,与array literal相同array literal只是一种更方便的创建数组的方法:也尝试过,与array literal相同array literal只是一种更方便的创建数组的方法:谢谢。我测试了其他对象类型的想法,也得到了“未定义”的响应,所以我理解这一点。唯一不同的是:obj=function{}的情况,它返回[object]谢谢。我用另一个物体来测试这个想法
类型,还得到了“未定义”的响应,所以我理解这一点。唯一不同的是:obj=function{}这返回[object-object]“constructor”不是真正可靠的;它并不存在于IE上,它的行为与它看起来所做的有着微妙的不同,这打破了许多形式的子类化。尽可能避免构造器不是很可靠;它并不存在于IE上,它的行为与它看起来所做的有着微妙的不同,这打破了许多形式的子类化。如果可能,最好避免!