Time of Update: 2017-01-18
命名空間 JavaScript本身中沒有提供命名空間機制,所以為了避免不同函數、對象以及變數名對全域空間的汙染,通常的做法是為你的應用程式或者庫建立一個唯一的全域對象,然後將所有方法與屬性添加到這個對象上。 複製代碼 代碼如下: /* BEFORE: 5 globals */ // constructors function Parent() {} function Child() {} // a variable var some_var = 1; // some objects var
Time of Update: 2017-01-18
this屬性工作表示當前對象,如果在全域作用範圍內使用this,則指代當前頁面對象window; 如果在函數中使用this,則this指代什麼是根據運行時此函數在什麼對象上被調用。 我們還可以使用apply和call兩個全域方法來改變函數中this的具體指向。 先看一個在全域作用範圍內使用this的例子: 複製代碼 代碼如下: <script type="text/javascript"> console.log(this === window); // true
Time of Update: 2017-01-18
我們已經在第一章中使用prototype屬性類比類和繼承的實現。 prototype屬性本質上還是一個JavaScript對象。 並且每個函數都有一個預設的prototype屬性。 如果這個函數被用在建立自訂對象的情境中,我們稱這個函數為建構函式。 比如下面一個簡單的情境: 複製代碼 代碼如下: // 建構函式 function Person(name) { this.name = name; } // 定義Person的原型,原型中的屬性可以被自訂對象引用 Person.prototype =
Time of Update: 2017-01-18
複製代碼 代碼如下: //首先建立父類 function Person(name, age, address) { this.name = name; this.age = age; this.address = address; } //建立子類 function Student(score) { this.score = score; //可以用call方法或者是apply方法調用函數的建構函式
Time of Update: 2017-01-18
複製代碼 代碼如下: <script type="text/javascript"> //建立基類 function Person(name, age) { this.name = name; this.age = age; } //通過原型方式給基類添加函數(這樣可以服用此函數) Person.prototype.showName = function () { alert(this.name); } //建立子類 function Student(name, age,
Time of Update: 2017-01-18
(1)建立一個新的對象,並讓this指標指向它; (2)將函數的prototype對象的所有成員都賦給這個新對象; (3)執行函數體,對這個對象進行初始化操作; (4)返回(1)中建立的對象。 複製代碼 代碼如下: function BB(a){ this.aa(); alert("s"); } //alert(typeof BB.prototype.constructor); BB.prototype.aa=function(){alert("sss");} var nn=new
Time of Update: 2017-01-18
js對象產生時:如:function BB(a){this.a="kkk"}var b=new BB();這時b是對象有了BB的的屬性prototype所指向的prototype對象;prototype對象有constructor屬性指向BB這個函數;所以alert(b.constructor==BB.prototype.constructor)
Time of Update: 2017-01-18
複製代碼 代碼如下: <script type="text/javascript"> <!-- /* 給原型 prototype 添加屬性的兩種方式 */ //方式一 var myObj = function(){ this.study = "JavaScript"; } myObj.prototype.hobby = function() { this.hobby = "See girl"; } var newObj = new myObj(); for ( var
Time of Update: 2017-01-18
距離某天還有天 javascript對象 距離某天還有天 [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
Time of Update: 2017-01-18
雖然現在慢慢減少了對jQuery的使用(項目上還是用,效率高點。平時基本不用了),希望從而減少對jQuery的依賴度。 但是這鏈式操作的方式實在吸引人(貌似現在不少新庫都採用了鏈式操作)。 新手無畏嘛,所以寫了以下代碼。主要是避免以後又忘了,呵呵。 複製代碼 代碼如下: window.k = function() { return new k.fn.init(arguments); } k.fn = k.prototype = { init:function() { this.length =
Time of Update: 2017-01-18
複製代碼 代碼如下: <script type="text/javascript"> var test = { numA: 10, objB: {}, arrC: [], init: function(){ alert(this.numA); }, sayHi: function(name){ alert("hello " + name); }, sayHelloWorld: function(){ this.sayHi("world"); }, get: function(){
Time of Update: 2017-01-18
在實際中,我們可以在注釋中定義好介面,在實際的代碼中予以實現 比如: 複製代碼 代碼如下: /* interface Composite { function add(child); function remove(child); function getChild(index); } interface FormItem { function save(); } */ var CompositeForm = function(id, method, action) { //
Time of Update: 2017-01-18
單例模式的基本結構: 複製代碼 代碼如下: MyNamespace.Singleton = function() { return {}; }(); 比如: 複製代碼 代碼如下: MyNamespace.Singleton = (function() { return { // Public members. publicAttribute1: true, publicAttribute2: 10, publicMethod1: function() { ... },
Time of Update: 2017-01-18
function A(x) { this.x = x; } alert(A.prototype); alert(A.prototype.constructor);根據彈出的結果,我們可以得到:原型對象是由函數的建構函式建立,它所擁有的屬效能被所有對象共用,初始時原型對象指向一個Object對象,並且定義了一個constructor屬性,該屬性指向定義該原型對象的建構函式本身,再看如下代碼。 Code function A(x) { A.prototype.x = x; } var obj =
Time of Update: 2017-01-18
複製代碼 代碼如下: function A(x) { this.x = x; } var obj = new A(5); alert(obj.x); 這段代碼十分簡單,但是我們重要的是看到了一個十分驚訝的結果,obj被我們賦予了一個屬性x,就如同我們在C#中使用某個類的執行個體的時候一樣。那麼這個屬性是怎麼樣產生的呢? 關鍵語句:this.x=x。這句話就是進行一個屬性的申明與賦值,這裡,我們肯定會問到,this是什嗎?為什麼可以使用this.x來進行申明與賦值屬性呢?
Time of Update: 2017-01-18
1.對象冒充 原理:建構函式使用this關鍵字給所有屬性和方法賦值(即採用類聲明的建構函式方式)。 因為建構函式只是一個函數,所以可使ClassA的建構函式成為ClassB的方法,然後調用它。ClassB就會收到ClassA的建構函式中定義的屬性和方法。 例如: 下面方式定義的ClassA和ClassB: 複製代碼 代碼如下: function ClassA(sColor){ this.color=sColor; this.sayColor=function(){
Time of Update: 2017-01-18
本文承接上一篇JavaScript物件導向編程(1) 基礎。 上篇說過,JavaScript沒有類的概念,需要通過函數來實作類別的定義。先通過一個例子說明: 複製代碼 代碼如下: function myClass() { var id = 1; var name = "johnson"; //properties this.ID = id; this.Name = name; //method this.showMessage = function() { alert("ID: " +
Time of Update: 2017-01-18
1. 用JavaScript實作類別 JavaScritpt沒有專門的機制實作類別,這裡是藉助它的函數允許嵌套的機制來實作類別的。一個函數可以包含變數,又可以包含其它函數,這樣,變數可以作為屬性,內部的函數就可以作為成員方法了。因此外層函數本身就可以作為一個類了。如下: 複製代碼 代碼如下: function myClass() { //此處相當於建構函式 } 這裡 myClass就是一個類。其實可以把它看成類的建構函式。至於非建構函式的部分,以後會詳細描述。 2. 如何獲得一個類的執行個體
Time of Update: 2017-01-18
既然是類,那麼就有抽象類別,具體類,類的繼承,同時,類的成員可以有執行個體成員和靜態成員。下面來看一下prototype是怎麼做到這些的。 先看prototype中的以下的代碼: 複製代碼 代碼如下: var Abstract = new Object(); Object.extend = function(destination, source) { for (property in source) { destination[property] = source[property]; }
Time of Update: 2017-01-18
javascript中的對象建立聲明: var obj = {}; 或者 var obj = new Object(); 為對象加入屬性,方法: //=====第一種寫法==================================== obj.name = '小明'; //為對象加屬性 obj.updateName = function(name){//為對象定義updateName方法 this.name = name; } alert(obj.name);