js 面向對象學習筆記
數據賦值拷貝
1、值得賦值是獨立的
num1=12; num1=num2
將存儲值賦值一份存儲.
2、引用類型的賦值共享數據
var age=22; age2=age; age=24 console.log(age);
age2依舊是22
引用類型的賦值共享數據
指向同一片內存
3、對象的賦值
var p={ name:"shizi", age:22, } p1=p; console.log(p.name,p.age); console.log(p1.name,p1.age); console.log("------------------------"); p.name="maotai"; p.age=24; console.log(p.name,p.age); console.log(p1.name,p1.age);
值類型賦值–函數形參&實參
例一
var num = 10; function foo(num){ num=100; console.log(num); } console.log(num); #10
例二
var num = 10; function foo(num1){ //實參: 調用時傳遞的參數 //形參: 定義時傳遞的參數 num1=100; console.log(num1); } foo(num); console.log(num); # 10 100 10
例三
var num = 10; function foo(num1){ //實參: 調用時傳遞的參數 //形參: 定義時傳遞的參數 //var num1=num; num1=100; console.log(num1); } foo(num); console.log(num); # 10 100 10
引用類型賦值
var obj={ name:"宅男" } function jinhua(param){ param.name="高富帥"; } jinhua(obj); console.log(obj.name); #高富刷
var obj={ name:"宅男" } function jinhua(param){ param.name="高富帥"; //重新開辟內存,param重新指向一片mem param={ name: "腐女" } param.name="宅男"; } jinhua(obj); console.log(obj.name); #宅男
對象的動態性
動態添加屬性和方法
p={ name:"劉德華", age:22 } //添加屬性方式1 p.gender="male"; //添加屬性方式2 p["salary"]=2000; //添加對象類型屬性 p.foo=function(){console.log("sing");} //訪問屬性方式1 console.log(p.foo()); console.log(p.salary); //訪問屬性方式2 console.log(p["name"];
p={ name:"劉德華", age:22 } p["salary"]=2000; //是字符串 console.log(p.salary);
p={ name:"劉德華", age:22 } p[0]=2000; //隱式將0轉換為字符串 //console.log(p.0); //發現這種方式訪問報錯 console.log(p["0"]); //這種方式正常訪問
以下等價
p={ name:"劉德華", age:22 } p[{}]="shizi"; console.log(p);
p={ name:"劉德華", age:22 } p["[object Object]"]="shizi"; console.log(p);
探究
a={} console.log(a.toString()); #"[object Object]"
delete刪除屬性
刪除對象的屬性
刪除未用var定義的變量.
- delete返回佈爾
- 刪除不存在的屬性,返回true
- 無法刪除原形中的屬性 如 delete obj.toString()
resu=delete obj.name; # resu返回值是true
var num1=100; console.log(num1); console.log(window.num1); # 100 100
num1=100; console.log(num1); console.log(window.num1); # 100 100
var num1=100; delete(num1); console.log(window.num1); # 100
num1=100; //未使用var,可被delete刪除 delete(num1); console.log(window.num1); ## undefined
到此這篇關於js 面向對象的文章就介紹到這瞭,更多相關js 面向對象內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Javascript Object對象類型使用詳解
- JavaScript對象與JSON格式的轉換及JSON.stringify和JSON.parse的使用方法
- JS實現數組過濾從簡單到多條件篩選
- typescript快速上手的基礎知識篇
- javascript之函數進階詳解