js中的函式與物件

2021-08-16 15:59:05 字數 1670 閱讀 3640

學習js始終理解不了函式與物件的關係,所以學習js感覺很難懂裡面的思想

看例子

function

person

(name,***,age)

var person=new person("fang","男",88);

//那麼person就能拿到name,***,age這三個屬性

那麼接著看下面的

person(){}

var person=new person();

person.***="男";

person.name="fang"

;person.age=55

;alert(person.age);//55

感覺很苦惱,沒有宣告的屬性直接就能設定,同時還能直接使用,這很難理解

下面是我的理解(錯了勿噴,新人)

在書中看到,我們可以為物件新增屬性,也可以為基本型別新增屬性,但是基本型別新增的資料無法使用

var number=20;

number.***="女";

alert(number.***);

會列印undefined,其實這也可以理解

因為基本型別這是資料型別,並不是物件,即不是乙個物件,那麼就不會存在屬性,

那麼分析一下下面這個**

person(){}

var person=new person();

person.***="男";

person.name="fang"

;person.age=55

;alert(person.age);//55

直接新增屬性並賦值,且能夠列印,那麼說明person是個物件

接著我嘗試了一下

alert(person instanceof

object);

列印的true,也就代表者person是物件,那麼新增屬性就正常了

不宣告直接新增屬性,在我看來,就是先宣告了

(這是我的猜測),但是也有理論**

看下面

var name="fang";

window.age=11;

alert(name);

alert(window.name);

alert(age);

alert(this.age);

alert(window.age);

script>

看著好奇怪,但是都會列印正確結果

當我們在script申明變數時,會加入到當前的環境中成為屬性,全域性環境本身就是

window物件,所以加入到了window物件上,同時this指向當前的環境物件,也就會列印同樣的結果

接下來看另乙個例子

function person(){};

person.***="fang";

alert(person.***);//fang

這個我們會好奇,不過測一下就知道了

alert(person instanceof

object);//true

列印的結果為true,也就可以新增屬性了

js中函式與物件的區別

1.new乙個function實際上是返回乙個函式。這與其他的物件有很大的不同。其他的型別array object等都會通過new操作符返回乙個普通物件。儘管函式本身也是乙個物件,但它與普通的物件還是有區別的,因為它同時也是物件構造器,也就是說,可以new乙個函式來返回乙個物件。2.jquery u...

js中的物件 函式 原型

關於 function object 和protoprototype 1.每乙個物件例項都有乙個proto屬性,這個屬性就是指向 物件建構函式的原型.let b new function console.log b.proto function.prototype true console.log ...

js中的類與物件

發現一篇博文,講了js中為什麼有物件,卻沒有 類 解釋為,類是抽象的,物件卻是客觀存在的,顯然不管有沒有 類 物件是可以存在的,於是寫了下面有趣的 言簡意賅,原文在此 var o 我發現了乙個東西。o.eat function 我發現它會吃 o.sleep function 我發現它會睡 o.tal...