在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 對象和函數(shù)對象有什么區(qū)別?

對象和函數(shù)對象有什么區(qū)別?

如下兩段代碼,分別是使用對象字面量和構(gòu)造函數(shù)創(chuàng)建對象。

代碼段1:

var a={"name":"nihao"};
console.log(a);

代碼段2:

var a=function(name){
    this.name=name;
};
var b= new a("nihao");
console.log(b);

問題1:這兩種方式生成的對象的區(qū)別是什么呢?

問題2:函數(shù)對象存在的意義是什么?

回答
編輯回答
念初
  1. js對象字面量,優(yōu)點:簡潔算優(yōu)點嗎?
  2. 構(gòu)造函數(shù)創(chuàng)建對象模式,優(yōu)點:支持創(chuàng)建對象時自定義邏輯,支持原型鏈繼承。
2017年11月10日 14:22
編輯回答
心沉

函數(shù)對象,類似于其他高級語言中的類。

2018年7月19日 12:38
編輯回答
孤影

要理解這個知識點,首先你要知道:

1、函數(shù)對象的原型是對象(原型鏈為:實例,通過new構(gòu)造函數(shù)-->函數(shù)對象-->對象-->null)

2、函數(shù)有prototype屬性,而對象沒有

因此,特別設(shè)計出了函數(shù)對象,方便對原型進行擴展,看下面代碼也許可以幫你理解:

var a=function(name){
    this.name=name;
};
a.prototype.sex="nan";
var b= new a("nihao");
console.log(typeof b);
console.log(b);
console.log(b.name);
console.log(b.sex);

如上,查看console.log(b);打印的內(nèi)容可以看到,對象b的原型是一個函數(shù)對象,它里面包含了在原型上擴展的屬性sex(一般我們不使用__proto__屬性對對象的原型鏈進行擴展,它可能導(dǎo)致一些意想不到的問題)

總結(jié)就是:函數(shù)對象,是一個對象,用來存放函數(shù)通過prototype擴展的屬性和方法,可以被繼承。構(gòu)造函數(shù)實例化后生成的對象的原型就是函數(shù)對象。

更多詳情請查看:https://segmentfault.com/a/11...

2017年10月19日 03:36
編輯回答
我不懂

這么跟你解釋不知道你能不能理解:

var a=function(name){
    this.name=name;
};
var b = function(){
    var obj = {};
    obj.__proto__ = a.prototype;
    a.call(obj);
    return obj;          
}
console.log(b);

所以

 b= {__proto:{
                constructor:function(name){
                this.name=name;
                };
                }
                
        }
2018年4月10日 21:07