您的位置:首页 > Web前端 > JavaScript

深度剖析关于Js中对象的研究

2017-10-25 13:58 477 查看
这次其实研究的对象说白了就是在js谁最大的问题。 

        当然不用多说了肯定是object,因为在js界流传着这么一句话, 万物皆是对象。但是真的是obj最大么?首先呢先说一下我总结的js对象的特有机制。

         第一就是引用机制(这个会触发到内存地址保存机制)。

         第二就是可以给予对象私有属性。

         例如:

         var a = {};

         var b = a;  //b引用a

         b.c = 10;  //给予b一个c的私有属性

         console.log(a.c)

         //10

         只要js 是对象就会触发这个引用机制 例子还有 很多,再比如

         var a = new String('abc');

         var b = a;

         b.c = 10;

         console.log(a.c)

         //10

         而非对象的数据类型不会触发这个机制

         例如

         a = ‘abc’;

         a.b = 10;

         console.log(a.b);

         //undefined;

         当然咱们要说的 js 中谁最大? 其实争论点 就是window 还有object

         因为 有着么一种说法 js 中最大的对象 是 window  

         那好 这么说的话 其实就是 对象大于window  window是属于 对象里面的。

         而其实 Object 原型  当然不光是obj 所有的 数据[Array,Number...]原型都是 寄存于 window 下面的 

         console.log(window.Object)

        //function  Object() { [native code] }

        在例如

        'Object' in  window 

        //true

        其实着么看来 似乎是 window 略占上风,因为 obj 是寄存于window 环境下 

        而

        typeof window

        //'Object'

        window instanceof 'Object'

        true

        而js 又告诉咱们 window 是一个对象 而 window的这个实例的父级 又是 Object。window的父级是obj?蒙圈了...

       

        而换一种思路方法的话 

        Object.prototype.a = 10;

        window.a;

        //10;

        一旦给对象加上原型链的话,window也有了这个私有属性,那么window还是属于Object的

        而

        window.Object  = null;

        new Object();

       //报错

       一旦把window 下面的 obj给回收的话 那么 声明一个对象直接报错,那么这下window 又扳回一局,obj似乎还是要听window的。

       感觉就像 一个将军下面的小兵 但是 这个将军又得听小兵的 但是小兵离开将军就立刻死了。那么将军大?还是小兵大?你说谁大吧?

       似乎这场战役 还是一个持久战  

       继续换思路

       window.constructor

       //function

       Object.constructor

       //function 

       原来他们创建该对象的引用 还都是function  当然这也是 可以说明 function为什么也是数据类型之一的解释 

       当然在js 中null 几乎可以回收任何数据原型,而唯独没法回收就是window,而原型Object可以轻松被回收。

       其实最后总结可见window 还是最大的。而window有个object的原型.而window 本身就是自己身上定义的原型,也就说window写了个标签也给自己贴身上了。

       也就是说与其说万物皆是对象的话,更合理的说法其实js中所有的东西都是window的.

       胡扯了半天,其实这个结论大家都知道啊....毛线‘深度‘阿...

       不加‘深度‘你们会进来么?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript obj 对象