javascript
JavaScript学习笔记——对象知识点
javascript對象的遍歷、內存分布和封裝特性
一、javascript對象遍歷
1.javascript屬性訪問
對象.屬性
對象[屬性] //字符串格式
2.javascript屬性遍歷
for in
?通過arguments來遍歷傳入的參數
function myArray () {var lengs= arguments.length;for (var i=0; i<lengs; i++) {this[i]=arguments[i];}}var arr=new myArray(1,2,3);alert(arr[0]);
二、內存分布
三、對象的特性之封裝
把對象所有的組成部分組合起來,盡可能的隱藏對象的部分細節,使其受到保護。
只保留有限的接口和外部發生聯系。
一、工廠函數
//工廠函數function dianshi (color,size,brand) {var Tv={};Tv.color=color;Tv.size=size;Tv.brand=brand;Tv.look=function () {alert("看電視");}Tv.play=function () {alert("玩游戲");}Tv.dvd=function () { alert("DVD");} return Tv;}var ds=dianshi("red","30inch","sony");//alert(typeof ds)alert(ds.color)var ds1=dianshi("blue","40inch","changh");alert(ds1["size"])二、構造函數
//構造方法的形式function Tv(color,size,brand) {this.color=color;this.size=size;this.brand=brand;this.play=function () {alert("玩游戲");}this.look=function () {alert("看電視");}this.dvd=function () {alert("DVD");}}var sony=new Tv("red","20 inch","sony");alert(sony.color)三、prototype方法
對原型屬性的修改將影響到所有的實例
//prototype方法function Tv(color,size,brand) {this.color=color;this.size=size;this.brand=brand;this.play=function () {alert("玩游戲");}}Tv.prototype.look=function () {alert("看電視");}Tv.prototype.dvd=function () {alert("DVD");}Tv.prototype.aaa={name:"張三"};var sony=new Tv("red","20 inch","sony");var changhong =new Tv("red","20 inch","CH"); // delete sony.color // delete sony.play // delete sony.look // alert(sony.color) // alert(sony.play) // alert(sony.look) // sony.look(); // changhong.look();alert(sony.aaa.name="李四"); alert(changhong.aaa.name);四、混合方法
//混合方式 function Tv(color,size,brand) {this.color=color;this.size=size;this.brand=brand;this.play=function () {alert("玩游戲");}Tv.prototype.aaa={name:"張三"};}Tv.prototype.look=function () {alert("看電視");}Tv.prototype.dvd=function () {alert("DVD");}?
javascript對象的繼承和Object對象
對象的一個類可以從現有的類中派生,并且擁有現有的類的方法或是屬性,這和過程叫做繼承。被繼承的類叫做父類或是基類,繼承的類叫做子類。
(一個對象擁有另一個對象的屬性和方法)
優點:
提高代碼的重用性
提高代碼的可維護性
提高代碼的邏輯性
一、Object對象
var obj=new Object()
屬性:
1.constructor
對創建對象的函數的引用(指針)。
2.Prototype 原型
**********************************************
對該函數對象的對象原型的引用。是函數對象的默認屬性
**********************************************
//Prototype //對該函數對象的對象原型的引用。var obj=new fun1();function fun1 () {this.name="zhangsan";}alert(obj.prototype)alert(fun1.prototype)A.對象的共享屬性存放到代碼段當中。
B.可以實現繼承。
方法:
A.hasOwnProperty(property)
判斷對象是否有某個特定的屬性,返回true或者false
B.IsPrototypeOf(object)
判斷該對象是否為另一個對象的原型。(用來檢測對象的類型)
var arr=new Array();
alert(Array.prototype.isPrototypeOf(arr))
c.運算符
instanceof
?java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例
alert(arr instanceof Array)
二、繼承
1.原型繼承
function person () {this.name="張三";this.say=function () {alert(this.name)} }function student () { } student.prototype=new person()var zhangsan=new student (); zhangsan.say() 2.對象冒充的形式
A.call
obj1.fun.call(obj2,參數1......)
B.apply
obj1.fun.call(obj2,[參數1,參數2....])
讓對象1的方法冒充成對象2的方法。
//對象冒充 /* function person () {this.name="張三";this.say=function () {alert(this.name)} }function student () {this.name="李四"; } var ren=new person (); var zhangsan=new student ();ren.say.call(zhangsan)*/ function person (name) {this.name=name;this.say=function () {alert(this.name)} }function student () {window.person.apply(this,["zhangsan"]) }var zhangsan=new student ();alert(zhangsan.name)zhangsan.say();??
對象的繼承順序
一、對象的繼承順序
//對象的繼承順序Object.prototype.say=function () {alert("我是頂層的方法");}function person () {this.say=function () {alert("我是父類的方法");}}person.prototype.say=function () {alert("我是父類原型的方法");}function study () {this.say=function () {alert("本身的方法");}}study.prototype=new person();study.prototype.say=function () {alert("本身原型的方法");} var zhangsan=new study ();alert(zhangsan.say)?
?
轉載于:https://www.cnblogs.com/tonglin0325/p/4712985.html
總結
以上是生活随笔為你收集整理的JavaScript学习笔记——对象知识点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj2337: [HNOI2011]
- 下一篇: 设置vim的默认工作路径同时与自动设当前