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

歡迎訪問 生活随笔!

生活随笔

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

javascript

JS函数浅析之constructor、prototype属性

發布時間:2025/7/14 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS函数浅析之constructor、prototype属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數是JS里很神奇的一位童鞋。那么如何創建一個函數呢?簡單來說有下面幾種形式:
??? 1、定義式
??? function a() {}
??? 2、聲明式
??? var a = function() {}; // 把一個匿名函數賦給一個變量
??? 3、構造函數
??? var a = new Function(); // 用Function來實例化一個對象

??? 函數有什么用呢?封裝,重用,對吧,把一些動作封裝起來,讓其他童鞋可以重復調用【使用()操作符即可】。
??? 函數按照功能分,可以分為:
??? 1、普通函數;
??? ??? 普通函數就是一般方法的封裝跟重用,如上面的a;
??? 2、構造函數;
??? ??? 構造函數用來實例化一個對象,像是一道菜譜,按照這個菜譜炒了一盤菜;定義構造函數,有個不成文的規定,就是函數名大寫,如:var A = function() {};
??? 3、對象方法;
??? ??? 用來定義一個對象的方法,比如一個Person對象var Person = {};需要定義一個getName方法,如:Person.getName = function() {};

??? 函數之constructor
??? 每個函數都有一個constructor屬性,這個屬性指向創建自己的函數;如上文中的a函數,他的constructor指向誰呢?誰創建它指向誰唄? 那是誰創建的呢?在firebug等控制臺上輸入a.constructor,顯示Function()。為什么是Function呢?其實,無論用上面 的哪種形式創建函數,在后臺都會使用new Function()形式創建。那Function的constructor指向誰呢?很意外,還是Function?為什么?由于Function是 ECMAScript規定的本地對象,獨立于宿主環境,這說明只要打開宿主環境(如:瀏覽器)這個Function就可以用了。

??? 函數之prototype
??? 跟constructor一樣,prototype也是每個函數默認就具有的屬性,這個屬性指向prototype對象,而prototype里面居然也有一個constructor屬性,指向了這個函數。

??? 構造函數
??? 構造函數可以實例化一個對象:如:var Person = function() {}; var p = new Person(); 這個p就是通過Person創建的,那么它的constrctor指向了Person,而其內部還有個__proto__屬性,在firefox、 chrome等瀏覽器下可以直接訪問這個屬性,這個屬性指向了prototype對象。

??? 實例、原型、構造函數 之間的關系
??? 實例是通過構造函數創建,但是跟構造函數沒有直接關系,其內部的__proto__屬性指向了prototype,而prototype(原型)的 constructor指向了構造函數,構造函數的prototype屬性指向了原型(prototype),所以說實例跟構造函數都是通過 prototype發生了關系。。。。

?

轉載:

http://my.oschina.net/shangshi/blog/31932

總結

以上是生活随笔為你收集整理的JS函数浅析之constructor、prototype属性的全部內容,希望文章能夠幫你解決所遇到的問題。

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