javascript prototype 对象 函数 <精简的美丽......>

javascript prototype 对象 函数

在javascript中我们都知道创建一个对象使用如下代码
var x = {}
对象可以拥有属性和方法
var x = {
    value : 0,
    add : function(a,b){
        return a + b;
    }
}

而创建一个函数时,使用
var fx = function(){}    <func1>

function fx(){}            <func2>

这两种声明方式的区别是 func2 的优先级高于 func1。func2可以在函数所在文件加载后立即初始化。
对象x是没有prototype属性的,且其实例化后也没有此属性。即
var xIns = Object.create(x);
    xIns.prototype 的引用是错误的。
因此,对象的方法是静态的,只能在对象声明时创建。
函数则不同。函数只要被使用(初始化或调用)后都会有prototype属性。可以使用prototype来动态的添加属性或方法。
所以,在javascript中对象可以划分为纯对象 var x = {} 与 函数对象 var obj = function(){}
而要使用prototype动态扩展一些方法或属性则需要使用函数对象。
综上所述,纯对象可以被看作是伪 prototype。
以下测试用例:
在html网页中输入
        function fx(){
        }

        var obj = {}
        
在浏览器中打开网页,设置断点,然后展开this,会发现纯对象与函数对象的不同,如下图

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。