javascript 原型查找 再次试探~
前言
我们知道 对象字面量 是没有能力去查找自己原型的,它必须通过他的构造器来完成原型查找,
1本文将测试以下
a,new这个对象 之前/之后 改变构造器的原型,使其指向其他构造器的原型
b,new这个对象 之前/之后 改变构造器的原型,使其指向其他构造器的构造的对象字面量
a(1)情况
     function B(){
         this.name = 'B';
      this.age = 12;
     }
     B.prototype = {
         sayname:"i am B"
     };
    function A(){
        this.name = 'a';
    }
     A.prototype = {
         sayname:"i am a"
     }
    A.prototype= B.prototype;
    var a = new A();
    console.log(a);
    debugger;

可以看到成功更改了a的prototype,
下面a2情况
 function B(){
         this.name = 'B';
         this.age =12;
     }
     B.prototype = {
         sayname:"i am B"
     };
    function A(){
        this.name = 'a';
    }
     A.prototype = {
         sayname:"i am a"
     }
    var a = new A();
    A.prototype= B.prototype;
    console.log(a);
    debugger;

可以看到 没能修改a的prototype
b1情况
     function B(){
         this.name = 'B';
         this.age =12;
     }
     B.prototype = {
         sayname:"i am B"
     };
    function A(){
        this.name = 'a';
    }
     A.prototype = {
         sayname:"i am a"
     };
    A.prototype= new B();
    //A.prototype.constructor=A;
   // var s = A.prototype.constructor;
    var a = new A();
    console.log(a);
   // console.log(s);
    debugger;

b1 补充 (正确的示例)
  function B(){
         this.name = 'B';
         this.age =12;
     }
     B.prototype = {
         sayname:"i am B"
     };
    function A(){
        this.name = 'a';
    }
     A.prototype = {
         sayname:"i am a"
     };
    A.prototype= new B();
    A.prototype.constructor=A;
    var s = A.prototype.constructor;
    var a = new A();
    console.log(a);
    console.log(s);
    debugger;

最后b2情况
  function B(){
         this.name = 'B';
         this.age =12;
     }
     B.prototype = {
         sayname:"i am B"
     };
    function A(){
        this.name = 'a';
    }
     A.prototype = {
         sayname:"i am a"
     };
    var a = new A();
     A.prototype= new B();
     A.prototype.constructor=A;
     var s = A.prototype.constructor;
    console.log(a);
    console.log(s);
    debugger;

可以看到没有修改成功,!所以我们得出结论,对象自己内部可以指向对应的prototype地址,只是这个API,js没有提供,而游览器提供的_proto_则可以,只不过这个只能用于游览器调试,js为什么梅伊欧提供,我猜应该是他觉得对象的原型链查找是自动的,没必要你手动指定,比如 alert(a.name),如果对象a没有name属相,它会自动去找他的上级原型,所以我们只需要再用构造器构造这个对象之前 手动指定好它的原型指向哪里,用的时候由对象自动完成查找!!!!!
javascript 原型查找 再次试探~的更多相关文章
- 理解JavaScript原型
		
Javascript原型总会给人产生一些困惑,无论是经验丰富的专家,还是作者自己也时常表现出对这个概念某些有限的理解,我认为这样的困惑在我们一开始接触原型时就已经产生了,它们常常和new.constr ...
 - JavaScript 原型的深入指南
		
摘要: 理解prototype. 原文:JavaScript 原型的深入指南 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 不学会怎么处理对象,你在 JavaScript 道路就就走 ...
 - JavaScript原型OOP——你上车了吗?
		
.title-bar { width: 80%; height: 35px; padding-left: 35px; color: white; line-height: 35px; font-siz ...
 - 深入理解javascript原型和闭包(3)——prototype原型
		
既typeof之后的另一位老朋友! prototype也是我们的老朋友,即使不了解的人,也应该都听过它的大名.如果它还是您的新朋友,我估计您也是javascript的新朋友. 在咱们的第一节(深入理解 ...
 - 深入理解javascript原型和闭包(6)——继承
		
为何用“继承”为标题,而不用“原型链”? 原型链如果解释清楚了很容易理解,不会与常用的java/C#产生混淆.而“继承”确实常用面向对象语言中最基本的概念,但是java中的继承与javascript中 ...
 - 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】
		
上文简单介绍了作用域,本文把作用域和上下文环境结合起来说一下,会理解的更深一些. 如上图,我们在上文中已经介绍了,除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了.而不 ...
 - 深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】
		
先解释一下什么是“自由变量”. 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量.如下图 如上程序中,在调用fn()函数时,函数体中第6 ...
 - 深入理解javascript原型和闭包(15)——闭包
		
前面提到的上下文环境和作用域的知识,除了了解这些知识之外,还是理解闭包的基础. 至于“闭包”这个词的概念的文字描述,确实不好解释,我看过很多遍,但是现在还是记不住. 但是你只需要知道应用的两种情况即可 ...
 - 深入理解javascript原型和闭包(18)——补充:上下文环境和作用域的关系
		
本系列用了大量的篇幅讲解了上下文环境和作用域,有些人反映这两个是一回儿事.本文就用一个小例子来说明一下,作用域和上下文环境绝对不是一回事儿. 再说明之前,咱们先用简单的语言来概括一下这两个的区别. 0 ...
 
随机推荐
- 五个典型的 JavaScript 面试题
			
阅读原文 在IT界,需要大量的 JavaScript 开发者.如果你的能力能够胜任这一角色,那么你将获得许多更换工作和提高薪水的机会.但是在你被公司录取之前,你需要展现你的技术实力,以便通过面试环节. ...
 - vue2.0 非父子组件如何通信
			
1 利用父组件传递 A组件传递到父组件,再由父组件传递到B组件 2 利用新的vue实例 var bus = new Vue() // 触发组件 A 中的事件 bus.$emit('id-selecte ...
 - Microsoft Dynamics CRM 2013 的相关更新 2013-12
			
DCRM 2013已经发布一段时间了,很多同学都在学习实践中. 截至目前,已经有了一些相关的更新,具体内容,可以参见web Page:http://blogs.msdn.com/b/c ...
 - UICollectionViewCell定制Button
			
UICollectionViewCell定制Button 效果 特点 1.能够动态设置每行显示的按钮的个数,以及控件的摆放格式 2.实现单选或者多选的功能,实现点击事件 3.自定制按钮的显示样式 用法 ...
 - Android开发学习—— activity
			
activity生命周期 #Activity生命周期###void onCreate()* Activity已经被创建完毕###void onStart()* Activity已经显示在屏幕,但没有得 ...
 - iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)
			
<分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...
 - 静态库介绍与简单演练及同名资源冲突解决(.a格式的静态库)
			
1.静态库和动态库都是闭源库,不公开源代码. 静态库:.a和.framework 动态库:.dylib和.framework(iOS9取消了.dylib,使用.tbd替代) 2.静态库和动态库在使用上 ...
 - javascript 设置input框只读属性 获取disabled后的值并传给后台
			
input只读属性 有两种方式可以实现input的只读效果:disabled 和 readonly. 自然两种出来的效果都是只能读取不能编辑,可是两者有很大不同. Disabled说明该input ...
 - MySQL高可用方案
			
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...
 - monkey命令选项参考
			
基本参数: --help 打印帮助消息 -v 可以在命令行中出现多次,每次一个-V选项都会增加monkey向命令行打印输出的详细级别.默认的级别0只会打印启动信息. ...