繼承:目前物件沒有的屬性和方法,別人有,拿來給自己用,就是繼承
1 混入式繼承
var I={ }; var obj = { name: 'jack', age:18, sayGoodbye : function () { console.log("goodbye") ; } }// 混入式继承, a中 将继承obj的所有属性 for (var k in obj ) { a[k] = obj [k] ; }
2.原型繼承
利用原型中的成員可以被其相關物件共享此特性,可以實現繼承
實作步驟
a) 為原型物件新增成員(透過物件的動態特性),不是嚴格意義上的繼承,,,,實例物件繼承了原型
#建構子.prototypr = 新物件
- 直接取代原型物件
如果物件原本有屬性和方法,使用替換的方法會覆寫原有的屬性和方法
- 利用混入的方式為原型物件新增成員
混入,遍歷一個物件的屬性與方法,賦值給另一個物件for...in...
js
var 物件1 = Object.creat(物件2) ;
- 這時候,建立出來的物件1 繼承自物件2
Object.creat方法有相容性問題
解決: 1.偵測瀏覽器是否支援Object.create方法,如果不支援,直接手動為新增化方法方法加入新增功能方法。 2.自訂函數,在函數內部判斷瀏覽器是否支援Object.create方法,如果不支持,則手動建立物件返回,否則直接呼叫
- 如何更安全的拓展內建物件
function creat(obj) { if (object.creat){ return Object.creat(obj); }else{ function F(){ } F.prototype = obj; return new F(); } }
function MyArray() { this.name = "我是数组" } var arr = new Array(); MyArray.prototype =arr ; // 继承后,我的数组中 就有了原生数组对象的所有属性和方法 var myArr = new MyArray() ; // myArr 这个对象就继承自arr
原型鏈
什麼是原型鏈每個建構函式都有原型對象,每個物件都有建構函數,每個建構函數的原型物件都是對象,也就有建構函數
然後就形成一個鍊式的結構,我們稱之為原型鏈
原型繼承是什麼?
透過修改原型鏈的結構,實現繼承的方式就是原型繼承
屬性搜尋原則
當存取一個物件的成員的時候,先在自身找有沒有,如果有,直接使用
如果沒有找到,則去當前物件的原型物件中去找,如果有,直接使用
#如果沒有找到,則去原型物件的原型物件中去找,如果有,直接使用
#指導Object,如果還是沒有,則回傳null
#透過修改原型鏈繼承結構實現的繼承就叫原型繼承
function Person() { } ;var p = new Person() ;p對象包含的物件有: Person.prototype中的成員和自身擁有的成員Person.prototype中的成員有: Object.prototype的成員和自身的成員 Object.prototype的成員:
constructor : 指向和該原型相關的建構子
hasOwnProperty 方法: 判斷獨享本身是否擁有某個屬性##able# properj 四 屬性。物件本身,2.判斷屬性是否可以遍歷 toString toLocalString: 將物件轉換成字串 toLocalString轉換成字串的時候應用的本地的設定模式
valueOf 運算的時候,先呼叫valueOf方法取得物件的值,若該值無法參與運算,將會調 用原型的物件方法# 用原型物件:1. Function
3種建立函數的方式:
直接宣告
函數表達式
#可以用Function 來建立函數:
函数名 = Function ( ) ; 函数名 = Function(); 函数名 = Function(,,,...
var distinct = new Function(` var arr = []; for (var i = 0; i < arguments.length; i++) { if(arr.indexOf(arguments[i])==-1){ arr.push(arguments[i]); } } return arr; `);
//可以使用Ese下边的符号 来连接字符串进行换行操作 但是存在兼容性问题
console.log(distinct(1, 2, 34, 34, 5, 5));#########eval### ###可以將字串轉換成js程式碼並執行###### 注意:當使用eval解析JSON格式字串的時候,要注意,會將{}解析為代碼段#########1.可以在JSON格式字符串前面拼接"var 變數名="### eval("var 變數名稱=" + JSON格式的字串);#########2.可以在JSON格式字串前後拼接()# #####eval("("+JSON格式的字串+")")######### 靜態成員與實例成員### 靜態成員### 透過建構子去存取的屬性和方法就是靜態成員###### 實例成員### 透過物件(實例)去存取的屬性和方法就是實例成員###
以上是JS高階相關知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器