高階物件導向

2022-08-23 05:36:11 字數 4202 閱讀 4245

//最基本的物件導向寫法

//建立建構函式

function aaa()

//構造方法

aaa.prototype.showname=function()

//使用

//建立例項

var a1=new aaa();

a1.showname();

//在js原始碼中:系統物件也是基於原型的程式

function array()

array.prototype.push=function(){};

array.prototype.sort=function(){};

var arr=new array();

arr.push();

arr.sort();

/*var str='hello';

alert(typeof str);//string

str.charat(0);

str.indexof('e');*/

//包裝物件:基本型別都有自己對應的包裝物件,string/number/boolean

//var str=new string('hello');

//alert(typeof str);//object

var str='hello';

//呼叫此句時觸發的動作:基本型別會找到對應的包裝物件型別,然後包裝物件把所有的屬性和方法給基本型別,然後包裝物件消失

//在原型上建立的方法是共享的

string.prototype.lastvalue=function()

alert(str.lastvalue());//o

//呼叫此句時,在string包裝物件下建立num屬性,建立完成後包裝物件消失

str.num=10;

//此句又重新建立了num屬性

alert(str.num);//undefined

//原型鏈:例項物件與原型之間的連線

//原型鏈的最外層:object.prototype

function aaa()

//此處的num在原型aaa.prototype上

aaa.prototype.num=10;

object.prototype.num=30;

var a1=new aaa();

alert(a1.num);//20

1.hasownproperty():看是不是物件自身下面的屬性

2.constructor:檢視物件的建構函式

每個原型都會自動新增constructor屬性

for in的時候有些屬性是找不到的

避免修改constructor屬性

3.instanceof:運算子

物件與建構函式在原型鏈上是否有關係

4.tostring():object上的方法

(1)hasownproperty()

var arr=;

arr.num=10;

array.prototype.num2=20;

alert(arr.hasownproperty('num'));//true

//num2是在原型的上公用方法,而不是自身獨有的

alert(arr.hasownproperty('num2'));//false

(2)constructor

function aaa()

var a1=new aaa();

alert(a1.constructor);//function aaa(){}

var arr=;

//alert(arr.constructor);//function array()

alert(arr.constructor==array);//true

//當我們寫建構函式aaa後,系統會在原型上自動生成constructor

function aaa(){};

//系統自動新增

//每乙個函式都會有的,都是自動生成的

//手動修改constructor指向

aaa.prototype.constructor=array;

var a1=new aaa();

alert(a1.constructor);//function array()

alert(a1.hasownproperty==object.prototype.hasownproperty);//true

function aaa(){};

//constructor:function aaa(){};

'小明';

//constructor:function array()

//json直接賦值給了aaa.prototype,將系統自動生成的覆蓋掉了

aaa.prototype=;

var a1=new aaa();

alert(a1.constructor);

function aaa(){};

aaa.prototype.name='小明';

//系統自帶的屬性遍歷不到

for (var attr in aaa.prototype)

(3)instanceof:運算子

function aaa()

var a1=new aaa();

alert(a1 instanceof aaa);//true

alert(a1 instanceof object);//true

alert(a1 instanceof array);//false

//做型別判斷

var arr=;

alert(arr instanceof array);

(4)tostring()

//tostring():object上的方法

//系統物件下面都是自帶的,自己寫的物件都是通過原型鏈找object下面的

var arr=;

alert(arr.tostring==object.prototype.tostring);//false

alert(arr.tostring==array.prototype.tostring);//false

function aaa()

var a1=new aaa();

alert(a1.tostring==object.prototype.tostring);//true

//把物件轉換成字串

var arr=[1,2,3];

array.prototype.tostring=function()

alert(arr.tostring());//1+2+3

//進製轉換

//十進位制轉換成16進製制

var num=255;

alert(num.tostring(16));//ff

//型別的判斷

var arr1=;

alert(object.prototype.tostring.call(arr1));//'[object array]'

var arr2={};

alert(object.prototype.tostring.call(arr2));//'[object object]'

var arr3=new date();

alert(object.prototype.tostring.call(arr3));//'[object date]'

//判斷陣列

alert(object.prototype.tostring.call(arr1)=='[object array]');//true

//iframe

var of=document.createelement('iframe');

var ifarray=window.frames[0].array;

var arr=new ifarray();

//constructor判斷型別失效

alert(arr.constructor==array);//false

//instanceof判斷型別失效

alert(arr instanceof array);//false

alert(object.prototype.tostring.call(arr)=='[object array]');//true

python高階 物件導向

使用類名.mro 可以檢視到下乙個呼叫的是哪個父類 import copy deftest2 a,b,args,kwargs print print a print b print args print kwargs deftest1 a,b,args,kwargs print a print b ...

Python高階 物件導向程式設計

class user object pass按照慣例,類名以大寫字母開頭,緊接著是 object 表示該類是從 object 類進行繼承的。user user 可以在類的建構函式 init 定義類的屬性。class user object def init self,name,age self.na...

C 高階物件導向 上

事物的難度遠遠低於對事物的恐懼!這章開始我們開始正式進入c 物件導向的領域,這節我們不聊 就聊聊生活中的現象,我們知道,物件導向開發,就是為了貼切我們生活中的例子,也就是說直接把生活中的現象搬到程式 中。類和物件是物件導向中的兩個基本概念 類 指一類事物,是乙個抽象的概念 比方動物 電腦等,都可看成...