日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript 面向对象(转)

發布時間:2024/4/14 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript 面向对象(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?1.使用[]調用對象的屬性和方法

function User() {this.age = 21;this.sex = "男?"; } var user = new User(); alert(user["age"]);

?


2.動態添加,修改,刪除對象的屬性和方法
//定義類 var user = new Object();//添加屬性和方法 user.name = "cary"; user.age = 21; user.show = function() {alert(this.name + "年?齡?為?:?" + this.age); } //執行方法 user.show(); //修改屬性和方法 user.name = "James"; user.show = function() {alert(this.name + "你?好?" ); } //執行方法 user.show(); //刪除屬性和方法 user.name = "undefined"; user.show = "undefined" //執行方法 user.show();

?

? 3.使用大括號{}語法創建無類型對象
var obj = {}; var user = {name: "cary",age: 21,show: function() {alert(this.name + "年?齡?為?:?" + this.age);} } user.show(); var obj = {}; 等價于 var obj = new Object();

?

? 4.Prototype原型對象

每個函數function也是一個對象,對應的類類型為“Function”,每個函數對象都有一個子對象prototype,表示函數的原型,所以當我們new
一個類的對象的時候prototype對象的成員都會被實例化為對象的成員。例如: function class1() { } class1.prototype.show = function() {alert("prototye member"); }var obj = new class1(); obj.show();

?

5.Function函數對象詳解 5.1.Function和Date,Array,String等一樣都屬于JavaScript的內部對象,這些對象的構造器是由JavaScript本身所定義的。上面說過函數
對象對應的類型是Function,這個和數組的對象是Array一個道理。所以也可以像new Array()一樣new Function()來創建一個函數對象,而
函數對象除了使用這種方式還可以使用function關鍵字來創建。我們之所以不經常使用new Function()的方式來創建函數是因為一個函數一般
會有很多語句,如果我們將這些都傳到new Function()的參數中會顯得可讀性比較差。
var functionName=new Function(p1,p2,...,pn,body)其中p1到pn為參數,body為函數體。 5.2.有名函數和無名函數 有名函數:function funcName(){}
無名函數:var funcName=function(){} 他們之間的唯一區別:就是對于有名函數他可以出現在調用之后再定義,而對于無名函數,他必須是在調用之前就已經定義好。 5.3.我們可以利用Function的prototype對象來擴展函數對象,如: Function.prototype.show = function() {alert("擴展方法"); } function fun() { } fun.show(); fun.show().show(); fun.show().show();


這句的意思是調用fun.show()這個函數對象的show方法。是一個遞歸的調用,因為fun.show()也是一個函數。

?




6.傳遞給參數的隱含參數arguments
我們在使用函數時除了傳遞制定的參數,還創建了一個隱含的參數arguments,如下:

function fun(a, b) {for (var i = 0; i < arguments.length; i++) {alert(arguments[i]);} } fun(1,2,3); arguments還有一個屬性是callee,表示對函數對象本身的引用。

?



7.函數的apply,call方法

他們的作用都是將函數綁定到另外一個對象上去運行,兩者只是在定義參數上有區別,如下:
Function.prototype.apply(thisArg,argArray);
Function.prototype.call(thisArg[,arg1[,arg2...]]);

下面是例子,obj1的show1方法綁定到obj2后整個函數的執行環境就轉移到了obj2,所以this指針也就指向了obj2,所以會顯示fun2t:

function fun1() {this.name = "fun1";this.show1 = function(arg) {alert(this.name + arg);} } function fun2() {this.name = "fun2";this.show2 = function(arg) {alert(this.name + arg);} }var obj1 = new fun1(); var obj2 = new fun2();obj1.show1.apply(obj2, ["t"]); obj1.show1.call(obj2, "t");

?




8.JavaScript中的類實現

8.1.命名空間:我們可以使用如下方式實現命名空間,namespace1 可以看做為命名空間。
var namespace1 = new Object(); namespace1.class1 = function() { //對?象初始化代碼 } var obj1 = new namespace1.class1(); 8.2.類成員
上面的我們已經為類添加了成員和方法,除了上面的方法我們還可以使用prototype的方式來給類添加成員,我們怎么做才是最合理的呢,首先
來看下前面的方式: function User() { //構造函數 } //成員定義 User.prototype.name = "cary"; User.prototype.show = function() {alert(this.name); } 上面的方式我們每定義一個類成員都要去寫User.prototype,我們可以重構為下面的形式: function User() { //構造函數 } //成員定義 User.prototype = {name : "cary",show = function(){alert(this.name);} }

?

?

8.3.私有成員

實現類的私有成員主要是利用變量的作用域,我們在構造函數中實現。

function User() { //構造函數中定義私有成員var name="cary";function show(){alert(name);}//共有成員this.setname=function(){name="james";} }
8.4.靜態成員 我們可以通過給一個函數對象直接添加成員來實現靜態成員,如: function class1() { } //靜態屬性和方法 class1.staticpr = "staticpr"; class1.staticmet = function() { } //調用 class1.staticmet(); 我們可以通過給函數對象所在的類Function添加成員來實現給所有的函數對象默認添加靜態成員,如下: Function.prototype.staticmet = function() { } function class1() { } //調用 class1.staticmet();

?



9.實現反射機制 使用for(...in...)方式,for中的var p來存儲User對象的屬性和方法,我們來判斷是屬性還是方法,如下: function User() { //構造函數 } //成員定義 User.prototype = {name : "cary",show : function(){alert(this.name+"Hello");} } var u=new User(); for (var p in u) { if(typeof(u[p])=="function") { u[p]();}else { alert(u[p]);} }

?

?

轉載于:https://www.cnblogs.com/laopo/p/5606469.html

總結

以上是生活随笔為你收集整理的javascript 面向对象(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。