//動態性是指,在一個Javascript對象中,要爲一個屬性賦值,咱們沒必要事先建立一個字段,只須要在使用的時候作賦值操做便可,以下例:
var obj=new object();
obj.name="myname";
obj.say=function(){
alert("hello");
}
obj.say();
//Javascript是弱類型的,它的數據類型無需在聲明時指定,解釋器會根據上下文對變量進行實例化,好比:
var s="text";
alert(s);
s=12+5;
alert(s);
//js的數據類型:基礎數據類型(字符串,布爾值,數值性(浮點型,整型))和對象類型(對象,數組,函數)
print(typeof obj);
print(typeof array);
print(typeof func);
//將打印出
object
object
function
//當使用str.length時,JavaScript會自動包裝一個臨時的String對象,內容爲str的內容,而後獲取該對象的length屬性,最後,這個臨時的對象將被釋放。
//因爲JavaScript是弱類型的,因此JavaScript引擎須要根據上下文來「猜想」對象的類型,這就使得JavaScript的效率比編譯型的語言要差一些。
//引用類型,如對象,數組和函數,因爲他的大小不受限制,故咱們經過對其引用來訪問它,引用自己就是個地址。即指向存儲複雜對象的位置。
//JavaScript自己是基於原型的,每一個對象都有一個prototype的屬性來,這個prototype自己也是一個對象,所以它自己也能夠有本身的原型,這樣就構成了一個鏈結構。
//解釋器傳遞給函數的是一個相似於數組的內部值,叫arguments,這個在函數對象生成的時候就被初始化了。好比咱們傳遞給adPrint一個參數的狀況下,其餘兩個參數分別爲undefined.這樣
//咱們能夠擴展JavaScript解釋器環境中內置的對象,這種方式的好處在於,擴展以後的對象能夠適用於其後的任意場景,而不用每次都顯式的聲明
//經過 new 操做符來做用與一個函數,實質上會發生這樣的動做:
首先,建立一個空對象,而後用函數的 apply 方法,將這個空對象傳入做爲 apply 的第一個參數,及上下文參數。這樣函數內部的 this 將會被這個空的對象所替代:
<strong>var triangle = new Shape( "triangle" );
// 上一句至關於下面的代碼
var triangle = {};
Shape.apply(triangle, [ "triangle" ]);</strong> javascript