//最基本的物件導向寫法//建立建構函式
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後,系統會在原型上自動生成constructorfunction 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 物件導向的領域,這節我們不聊 就聊聊生活中的現象,我們知道,物件導向開發,就是為了貼切我們生活中的例子,也就是說直接把生活中的現象搬到程式 中。類和物件是物件導向中的兩個基本概念 類 指一類事物,是乙個抽象的概念 比方動物 電腦等,都可看成...