1、我们所创建的每一个函数,解析器都会向函数中添加一个属性prototype。这个属性对应着一个对象,这个对象就是我们所谓的原型对象。如果函索作为普通函数调用prototype没有任何作用。

当函数以构造函数的形式调用时,它所创建的对象中都会有一个隐含的属性

指向该构造函数的原型对象,我们可以通过__proto__来访问属性

原型对象就相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型对象,我们可以将对象中共有的内容,统一设置到原型对象中。

当我们访问对象的一个属性或方法时,它会先在对象自身中寻找,如果有则直接使用,如果没有则会去原型对象中寻找,如果找到则直接使用

当我们创建构造函数时,可以将这些对象共有的属性和方法,统一添加到构造函数的原型对象中

这样不用分别为每一个对象添加,也不会影响到全局作用域,就可以使每个对象都具有这些属性和方法了

 <script type="text/javascript">
function MyClass(){
} MyClass.prototype.a = 123;
MyClass.prototype.sayHello = function(){
alert("Hello");
};
var mc = new MyClass();
var mc2 = new MyClass();
/*console.log(MyClass.prototype);
console.log(MyClass());*/
console.log(mc2.__proto__ == MyClass.prototype);
mc.a = "我是mc中的a";
console.log(mc2.a);
console.log(mc2.__proto__.a);
console.log(mc.a);
console.log(mc.__proto__.a);
</script>

2、使用in检查对象中是否含有某个属性时,如果对象中没有但是原型中有,也会返回true

可以使用对象的hasOwnProperty()来检查对象自身中是否含有该属性

使用该方法只有当对象自身中含有属性时,才会返回true

3、原型对象也是对象,所以它也有原型,

当我们使用一个对象的属性或方法时,会先在自身中寻找,自身中有,则直接使用,

如果没有则去原型对象中寻找,如果原型对象中有,则使用

如果没有则去原型的原型中去寻找,直到找到Object对象的原型

Object对象的原型没有原型,如果在Object原型中依然没有找到,则返回underfined

 <script type="text/javascript">
function MyClass(){
}
MyClass.prototype.name = "我是原型中的名字";
var mc = new MyClass();
mc.age = 123;
console.log(MyClass.prototype);
console.log(mc.name);
console.log("name" in mc);
console.log(mc.hasOwnProperty("name"));
console.log(mc.hasOwnProperty("age"));
console.log("hasOwnProperty" in mc);
console.log(mc.hasOwnProperty("hasOwnProperty"));
console.log(mc.__proto__.hasOwnProperty("hasOwnProperty"));
console.log(mc.__proto__.__proto__.hasOwnProperty("hasOwnProperty")); </script>

JavaScript之原型 Prototype的更多相关文章

  1. javascript进阶-原型prototype

    一.javascript原型认识 很多编程语言都有类的概念,我们可以拿原型和类进行比较,看看它们之间的区别以及相同点在哪里. 1.类:类是一个具体事物的抽象所以类是一个抽象的东西,在面向对象中类可以用 ...

  2. 悟透Javascript之 原型prototype

    构造函数的Prototype上定义的方法确实可以通过对象直接调用,而且代码是共享的.我表示我不懂.太难理解了,艹.在Javascript中,prototype不但能让对象共享自己的财富,而且proto ...

  3. 简单理解javascript的原型prototype

    原型和闭包是Js语言的难点,此文主要讲原型. 每一个方法都有一个属性是 prototype 每一个对象都有一个属性是 _proto_ 一旦定义了原型属性或原型方法,则所有通过该构造函数实例化出来的所有 ...

  4. [js高手之路]一步步图解javascript的原型(prototype)对象,原型链

    我们接着上文继续,我们通过原型方式,解决了多个实例的方法共享问题,接下来,我们就来搞清楚原型(prototype),原型链的来龙去脉. function CreateObj(uName) { this ...

  5. JavaScript 面向对象 原型(prototype) 继承

    1.对象的概念:无需属性的集合,属性可以为数值,对象或函数,ECMAscript中没有类的概念,这点是javascript与其他面向对象(OO)语言不同的地方. //创建一个自定义对象 var per ...

  6. javascript之原型prototype

    理解JavaScript原型 http://blog.jobbole.com/9648/ Web程序员应该知道的Javascript prototype原理 http://www.leonzhang. ...

  7. javascript 对象 原型 prototype

  8. JavaScript中的类(class)、构造函数(constructor)、原型(prototype)

    类 Class 类的概念应该是面向对象语言的一个特色,但是JavaScript并不像Java,C++等高级语言那样拥有正式的类,而是多数通过构造器以及原型方式来仿造实现.在讨论构造器和原型方法前,我可 ...

  9. JavaScript的原型链继承__propt__、prototype、constructor的理解、以及他们之间相互的关系。

    回想自己已经工作了有一段时间了,但是自己对JavaScript的原型链.和继承的理解能力没有到位,最近他们彻底的整理并且复习了一遍. 本案例中部分文案来自网络和书籍,如有侵权请联系我,我只是把我的理解 ...

随机推荐

  1. HTTP Strict Transport Security

    HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式. 作用 一个网站接受一个HTTP的 ...

  2. 安装PYTHON PIL包

    安装pillow而不是PIL pip install pillow 参考: https://github.com/python-pillow/Pillow

  3. Orchard Core 文档翻译 (三) Orchard Core Modules

    原文连接:https://www.cnblogs.com/Qbit/p/9746442.html 转载请注明出处 介绍 Orchard Core Modules库提供了一种机制,可以拥有一个独立的模块 ...

  4. js原型链继承及调用父类方法

    方法1: var Parent= function () { }; Parent.prototype.process = function(){ alert('parent method'); }; ...

  5. ABAP宏的调试

    我们都知道高级语言宏一般是无法调试的.但是ABAP的宏例外. 比如我写了下面一段宏,名为insert_table. 执行这段代码,调试器会在第23行停下来. ABAP调试器里有个工具可以用于宏的调试, ...

  6. POJ 3321 DFS序

    Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 30636   Accepted: 9162 Descr ...

  7. Pod常使用命令

    pod 命令汇总 # 创建默认的 Podfile $ pod init # 第一次使用安装框架 $ pod install # 安装框架,不更新本地索引,速度快 $ pod install --no- ...

  8. 【JeeSite】区域和菜单管理

    /** * 区域Entity * @author ThinkGem * @version 2013-05-15 */ public class Area extends TreeEntity<A ...

  9. java(IO)读写文件乱码转换UTF-8问题

    java(IO)读写文件乱码转换UTF-8问题 读取文件 String Content = ""; // 文件很长的话建议使用StringBuffer try { FileInpu ...

  10. 【luogu P3410 拍照】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3410 这个题就是求一个最大权闭合图 在一个图中,一些点构成一个集合,且集合中的出边指向的终点也在这个集合中, ...