JS prototype原型问题


var a = {
    test :  function () {
    }
}

function b() {   // b 构造函数
    this.j=3;
}

var t = new b(); //T实例

b.prototype ; // b 的原型对象
b.__proto__; //?有没有这种写法
t.__proto__; //?有没有这种写法
t.prototype; //?有没有这种写法
a.prototype; //?有没有这种写法
a.__proto__; //?有没有这种写法

想问一下什么时候用prototype 然后b.__proto__; //?有没有这种写法
t.__proto__; //?有没有这种写法
t.prototype; //?有没有这种写法
a.prototype; //?有没有这种写法
a.__proto__; //?有没有这种写法


初始状态只有函数有prototype.
实例的__proto__指向其构造函数的prototype.
函数也有__proto__因为函数是Function函数构造函数的实例。


除去自行添加的情况。。。。

所有对象(除了非常特殊的一个,可不考虑)都有__proto__ 属性,只有函数才具有prototype属性。
所以只有t.prototypea.prototype是没有的。其他都是有的。

function b() {};
var t = new b();

这样的代码,可以看作是b是类,tb类的一个实例。
比如

// class Object() {}
var obj = new Object();
var obj2 = new Object();

这样objObject类的一个实例。在面向对象的编程中,一些具有共性的对象叫做一个类,因此这些对象有一些相同的方法。所以可以在定义类的时候定义这些具有共性的方法,某种类的实例可以直接访问调用些方法。比如obj.toString(); obj2.toSTring()。显然如果是obj.toString = function(){} 这样定义,是不好的。

JS中给出的方案是,在类(e.g.Object)中定义一个prototype属性,然后在类的实例中定义一个__proto__属性。类的方法定义在prototype,在创建实例的时候__proto__ 赋值为这个值。(e.g. obj.__proto__ = Object.prototype)。 当写下obj.toString()的时候,解释器就可以通过obj.__proto__.toString访问到在类Object.prototype中定义的方法。实现了类中方法的共享。所以下面的代码是可以的。

Object.prototype.myToString = function(){ return "A Object";}
obj.myToString(); // "A Object"
obj2.myToString(); 

上述所说的类(e.g.Ojbect)在JS里面和函数合二为一了。所有对象都有__proto__属性,只有函数才有prototype属性。

继承,以及存在的问题。。。略

JS里的一些语法糖(简写);

var obj = {};
//等价与
var obj = new Object();

function fn() {};
var fn = new Function();



相关阅读:
关于移动端localstorage 手机浏览器无效果
PHP中的$_REQUEST和$_POST|$_GET有什么区别??
react这个错是什么意思,要怎么解决
.htaccess 文件导致的自动加载问题
百度数据图谱的插件
用angularjs怎么获取到data对象里的HeWeather data service 3.0对象里的数据?
router-link 阻止默认的点击事件么?
点击按钮的跳转ui-sref后进入的页面报错,是什么原因呢?
本地测试需要htpps,怎么解决?
jdk1.8关于持久化的api是哪个?为什么在javax包下找不到persistence这个类?
vue里模版如何转字符串
出现resolve-url-loader cannot operate:source-map error
css实现六边形带图片展示
关于react 一个问题(Render HTML string w/JSX expression)
gulp合并js代码问题
mysql怎么实现mssql的if exists() begin...end功能?
关于mongodb多表和检索查询
brew install php56-redis 安装错误
vue2.0时如何结合highlight.js实现代码高亮的?
程序怎么判断windows的隐藏文件/文件夹?



快速导航

Copyright © 2016 phpStudy |