學習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...