new運算的具體執行過程

2021-09-11 18:24:48 字數 857 閱讀 4881

function person(name,age)

var p1 = new person("小明","20");

console.log(p1);

1.建立乙個空物件

var obj = new object();

2.讓person中的this指向obj,並執行person的函式體

var result = person.call(obj);

3.設定原型鏈,將obj的__proto__成員指向了person函式物件的prototype成員物件

obj.proto= person.prototype;

4.判斷person的返回值型別,如果是值型別,返回obj。如果是引用型別,就返回這個引用型別的物件。

if (typeof(result) == "object")else
var a = ;

var b = function();

var c = function()

b.prototype = a;

c.prototype = a;

var b = new b();

var c = new c();

a.n++;

console.log(b.n);

console.log(c.n);

若不理解原型物件和原型鏈可以看我的另外乙個文章

參考:

struts的具體執行過程

struts有乙個 控制器actionservlet,負責處理使用者的url請求,actionservlet在web.xml檔案中配置,它繼承了httpservlet,其實就是乙個普通的servlet。actionservlet中有兩個方法,如下 process方法繼續呼叫requestproces...

C 編譯,執行過程 具體解釋。

要更深入了解c 必需要知道乙個程式從開始到結束都幹了些什麼,怎麼幹的。所以我從c 編譯到執行過程,解析下程式是怎麼跑的。首先,初略的說一下之前c 的編譯過程。c 編譯過程包含預編譯 彙編 編譯 鏈結。稱為乙個可執行檔案。windows平台下為.exe檔案 預編譯主要展開包括的標頭檔案,巨集定義等操作...

定位的new和new 運算子

同一作用域下的同名函式,只要引數列表不同,即可過載。過載 new和 new 運算子時,函式的第 1個引數是固定的,表示申請分配記憶體的長度。使用者在不改變第 1個引數的情況下,可以隨意增加引數,過載多個 new和 new 運算子函式。乙個比較實際的例子就是過載定位的 new和 new 運算子,即為 ...