由於整個js都是由物件構成的,所以說可以用以下函式檢視某個物件所有的屬性
function showallproper(objname,strobjname)
使用時候
showallproper(mebera,"mbera")
就會傳回所有的屬性
建立乙個object物件大體有三種方法
1. 呼叫new運算子和object物件 var obj=new object() 或var obj=new objct(value)
object物件沒有任何屬性,需要手動新增屬性,方法如下
var membera=new object()
membera.name="tony";
membera.age=25;
或mebera["name"]="tony";
mebera.["age"]=25;
2. 用大括弧來直接描述屬性和方法 var objectname=;
屬性名稱和屬性值用冒號: 分開,每組屬性用 逗號,分隔
如下所示
var membera=,
};3. 自定義乙個建構函式,然後和第一種方式一樣用new來建立
function funcname( param1,param2,...,paramn)
宣告完構建函式後,可以定義此物件型別物件:
var obj=new funcname(value1,value2,...,valuen);
定義物件的方法和定義物件屬性很像,只要將函式名稱指定給物件就可以了,或者直接定義函式
如下function rect(w,h)
或function calarea
function rect(w,h)
注意定義完物件後可以使用delete來刪除 屬性或者物件
delete object_name;
delete object_name.property_name;
建立物件共同的屬性和方法prototype
屬性物件prototype就是讓我們定義相同型別物件公用的屬性和方法
function_name.prototype.property_name=proterty_value
具體如下
function calarea
function rect(w,h)
rect.prototype.area=calarea;
建立物件公用屬性後,可以用下面方式來參考值
function_name.prototype.poperty_name
或者object_name.property_name
當讀取公用的屬性值或是呼叫公用的方法時,兩種方式都可以,動腦是如果要更改公用的屬性值,或者更改方法的定義
應該使用第一種方式,因為第二種方式會建立新的物件屬性或者方法定義,並賦值。
新的物件屬性是屬於個別物件的,隊日他們的名稱和公用物件的屬性名稱一樣,但它不是公用物件,類似於物件繼承的override
建立類class的屬性和方法
方法如下
function_name.property_name=proterty_value;
function_name.method_name=method_definition;
其中function_name為已經存在的建構函式名稱
例如function circle()
定義乙個為pi的類屬性
circle.pi=3.14
定義乙個為cal的類屬性
circle.cal=function(r);
其中this.pi和circle.pi是一樣的,這裡的this不是呼叫此方法的物件參考,而是circle本身的參考.
物件的繼承
乙個物件的構建函式可以借助它的prototype物件繼承某個物件的所有屬性
subfunction_name=new superfunction_name(...)
propotype 物件是用力定義由建構函式建立物件的共用屬性和方法,所以將乙個物件指定給它,使的prototype物件擁有此物件的所有屬性和功能
例如function circle(radius)
funcion colorcircle(radius,color)
function _tostring
colorcircle.prototype=new circle(0) // 或者 new circle,繼承circle所有的屬性
colorcircle.prototype.tostring=_tostring; // 過載tostring
constructor是prototype物件的乙個屬性,是物件建構函式的參考
function somefunc()
x=new somefunc();
alert(x.constructor==somefunc);
會顯示true
但是如下
function superfunc()
function subfunc()
x=new subfunc(); // x.constructor==subfunc
subfunc.prototype=new superfunc;
y=new subfunc(); // y.constructor==superfunc
alert(x.constructor==y.constructor);
會顯示false
因為subobject的prototype變成了新建立
js內建物件 Object
js中的一些內建方法還是挺好用的,使用它們有時候會節省我們很多時間,還有減少 量 一 object.keys obj 獲取乙個物件的key值,但是引數obj必須是可列舉的物件,他會返回乙個包含物件自身的所有可列舉屬性值的陣列。let obj abc 123 let keys object.keys ...
js如何列印object物件
js除錯中經常會碰到輸出的內容是物件而無法列印的時候,光靠alert只能列印出object標示,卻不能列印出來裡面的內容,甚是不方便,於是各方面整理總結了如下乙個函式,能夠將陣列或者物件這類的結果一一列印出來,具體 如下 function writeobj obj alert description...
Object裡面的方法
object裡面有12個方法,沒寫完,寫一些部分代表 tostring 輸出物件的位址字串 hashcode碼 equals 用的是 比較的是引用,在有些類裡面是重寫了這個方法的,重寫了的比較的是值 clone 淺複製,建立並返回這個物件的乙個副本 protected修飾 object 預設構造方法...