isPrototypeOf&&getPrototypeOf

来源:http://www.cnblogs.com/giggle/archive/2016/02/22/5208199.html
-Advertisement-
Play Games

對isPrototypeOf和getPrototypeOf兩個方法,通過例子進行了簡要的講解。


在JavaScript這個一切皆為對象的世界里,難免會判斷原型鏈的問題。那麼我們就有必要瞭解瞭解isPrototypeOf和getPrototypeOf這兩個方法咯。

1、  isPrototypeOf

isPrototypeOf

作用

我的理解:確定一個對象的原型鏈中是否繼承了prototype

官方語言:Determines whether an object exists in another object's prototype chain.

用法

prototype.isPrototypeOf(object)

備註

如果object的原型鏈中有prototype,則返回true;否則,返回false

我們一起demo下,看看isPrototypeOf到底是個什麼東東。

<!DOCTYPE html> 
    <head>
        <title>isPrototypeOf</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>
    <body>
        <script>
            function A(){
            
            }
            var a = new A();
            //通過A創建一個對象a,所以a的__proto__是指向A.prototype的
            console.log(A.prototype.isPrototypeOf(a));
            //A.__proto__是指向Object.prototype的
            console.log(Object.prototype.isPrototypeOf(A));
            //由於A.prototype的__proto__是指向Object.prototype的,所以a也就含有Object.prototype咯
            console.log(Object.prototype.isPrototypeOf(a));
            
        </script>
    </body>
</html>

運行上面的代碼,截圖chrome,如下

從上面的代碼和chrome結果,可知isPrototypeOf的確是判斷對象中的原型鏈是否繼承了prototype。

2、  getPrototypeOf

getPrototypeOf

作用

返回對象__proto__指向的原型prototype

用法

Object的靜態方法,使用如下Object.getPrototypeOf(object)

還是如此,我們一起demo下

<!DOCTYPE html> 
    <head>
        <title>getPrototypeOf</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>
    <body>
        <script>
            function Fn(){
            
            }
            var fn = new Fn();
            //通過getPrototypeOf靜態方法,獲得對象fn的prototype
            var proto = Object.getPrototypeOf(fn);
            //將獲得的prototype添加一個name屬性,並賦值
            proto.name = 'Monkey';
            //輸出對象fn.name
            console.log(fn.name);
            //判斷proto是否是Fn.prototype
            console.log( 'proto === Fn.prototype? ' + (proto === Fn.prototype) );
            //判斷fn的__proto__是否指向了prototype
            console.log( proto.isPrototypeOf(fn));
        </script>
    </body>
</html>

執行上面的代碼,截圖chrome,如下

從上面的代碼和結果圖,可得:

getPrototypeOf,的確是返回對象__proto__指向的prototype。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基於jQuery拖拽插件製作拖拽排序特效是一款非常實用的滑鼠拖拽佈局插件。效果圖如下: 線上預覽 源碼下載 實現的代碼。 html代碼: <h1>水平拖拽</h1> <div class="demo"> <div class="item item1"><span>1</span></div> <di
  • 引言: 最近遇到個問題,同時引用了jquery庫和另外一個js庫。當用$XX去調用js庫函數時,發現失效了!於是找資料,原來是jquery命名衝突了。因為許多 JavaScript 庫使用 $ 作為函數或變數名,jquery也一樣。其實$只是jquery的一個別名而已,假如我們需要使用 jquery
  • 一、工廠模式 function createStudent(name,age){ var o=new Object(); o.name=name; o.age=age; o.myName=function(){ alert(this.name); }; return o; } var student
  • 紅色:熱情、奔放、喜悅、莊嚴 黃色:高貴、富有、燦爛、活潑 黑色:嚴肅、夜晚、沉著 白色:純潔、簡單、潔凈 藍色:天空、清爽、科技 綠色:植物、生命、生機 灰色:莊重、沉穩 紫色:爛漫、富貴 棕色:大地、厚朴
  • 怎樣把一個DIV放到另一個div右下角??? 藉助CSS定位來實現,你將右下角的那個DIV放在另一個DIV裡面,參考代碼如下示: <div id="box1"> <div id="box2">測試內容</div> </div> <style> <!-- #box1{width:600px;heigh
  • [1]關鍵字 [2]16進位 [3]rgb [4]rgba [5]hsl [6]hsla
  • HTML 用兩個空格來代替製表符(tab) -- 這是唯一能保證在所有環境下獲得一致展現的方法。 嵌套元素應當縮進一次(即兩個空格) 對於屬性的定義,確保全部使用雙引號,絕不要使用單引號。 不要在自閉合(self-closing)元素的尾部添加斜線 -- HTML5 規範中明確說明這是可選的。 不要
  • 傳統的JavaScript註重用函數和基於原型的繼承來創建可復用的組件,但這可能讓用習慣面對對象方式的程式員感到棘手,因為他們的繼承和創建對象都是由類而來的。從JavaScript的下一個版本,ECMAScript 6開始,JavaScript程式員就能夠用基於這種基於類的面對對象方式來創建編寫自己
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...