一个没有实例化过的对象没有原型。

1
2
let a;
a.prototype;
1
2
3
Uncaught TypeError: Cannot read property 'prototype' of undefined
at <anonymous>:1:3
(anonymous) @ VM301:1

把a用Object实例化后:

1
2
a=new Object;
a.prototype;
1
undefined
1
a.__proto__;
1
2
3
4
5
6
7
8
9
10
11
12
13
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()
1
Object.prototype;
1
2
3
4
5
6
7
8
9
10
11
12
13
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()

现在假设:let a = new b;a.__proto__指向b.prototype

理解有误:

1
2
3
> let var=111;
> var.prototype; //null
>

即:只有函数有prototype属性。

其实Object是一个全局对象,也是一个构造函数,以及其他基本类型的全局对象也都是构造函数。

对于js的函数来说,函数也是个对象,且被定义的时候已经被实例化了,所以当然有原型。

相关文章
评论
分享
Please check the post_relate setting in config.yml of hexo-theme-Annie! You should make sure 'postsEnable == true' and the number of site posts greater than 1.
Please check the comment setting in config.yml of hexo-theme-Annie!