關於Function原型物件和Object原型物件的一些疑惑
網上有一道美團外賣的面試題是這樣的: Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(){}; var p = new Person(); console.log('p.a: '+ p.a); // p.a: undefined console.log('p.b: '+ p.b); // p.b: b 問為什麼? 有不少同學第一眼看上去就覺得很疑惑,p不是應該繼承了Function原型裡面的屬性嗎,為什麼p.a返回值是undefined呢? 其實,只要仔細想一想就很容易明白了,Person函式才是Function物件的一個例項,所以通過Person.a可以訪問到Function 原型裡面的屬性,但是new Person()返回來的是一個物件,它是Object的一個例項,是沒有繼承Function的,所以無法訪問 Function原型裡面的屬性。但是,由於在js裡面所有物件都是Object的例項,所以,Person函式可以訪問到Object原型裡面的 屬性,Person.b => 'b'
相關推薦
關於Function原型物件和Object原型物件的一些疑惑
網上有一道美團外賣的面試題是這樣的: Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(){}; var p = new Person(); console.log('p.a: '+ p.a); // p.a
有原型的物件和沒有原型的物件
在學習Mobx時接觸到了有原型物件和沒原型的物件概念 宣告一個物件 1 let o = Object.create({}) // 方法一 2 let o = {} // 方法二3 let o = Object({}) // 方法三 以上三種方法建立的物件都是
解析js中的原型鏈和在原型鏈中物件屬性查詢
//原型鏈中屬性的查詢 function Person(name,color){ this.name=name; this.color=color; } function Teacher(name,age){ this.name=name; this.age=age;
匿名物件和object的轉換
有時候經常用到需要把一個匿名物件存入session或List<object>或其他容器中,可是取出來的時候變成object了,不太方便使用。 下面是一種轉換方式: class Program { static void Main
js物件和Object關係、以及js資料型別雜談
今晚上很意外看到一個面試題,js物件和Object的關係,然後梳理了下腦中的知識~~ JavaScript物件和Object關係 W3C上有說JavaScript中所有事物都是物件:數字、字串、陣列、函式等等…我感覺從某種意義上是
ES6和ES5語法區別(Reflect物件和Object物件 )
概述 Reflect物件與Proxy物件一樣,也是 ES6 為了操作物件而提供的新 API。 現階段,某些方法同時在Object和Reflect物件上部署,未來的新方法將只部署在Reflect物件上。也就是說,從Reflect物件上可以拿到語言內部的方法。
父類物件和子類物件之間可以相互轉換嗎
可以相互轉換。但是若父類物件想轉換為子類物件,父類物件一定是用子類物件初始化的。 那麼父類物件如何用子類物件初始化呢? 假設父類為A,子類為B,那麼用子類初始化程式碼為: A a=new B() 這就相當於我們用父類的控制代碼指向了子類的空間,如下圖所示:
js json物件和普通JS物件的區別
定義: JSON是什麼?JSON是JS的一種簡單資料格式,JSON是JavaScript原生格式,它是一種嚴格的js物件的格式,JSON的屬性名必須有雙引號,如果值是字串,也必須是雙引號。 問題: JSON是什麼?(JSON和JavaScrip物件有什麼區別?)如何把JS物件轉換
js中的內建物件,宿主物件和自定義物件
JS中,可以將物件分為“內建物件”、“宿主物件”和“自定義物件”三種。 1,內建物件 js中的內建物件包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各種錯誤類物件,包括Erro
python知識整理--議可變物件和不可變物件以及str、list、tuple、dict、set
可變物件:變數、list 不可變物件:str、tuple、dict、set 1、變數是可變的不用多說,變數賦值一次便改變一次。 2、list 可變物件,可對list進行如下新增刪除排序等操作。 list = [2,3,5,1,2] list.append(8) list.insert(0,
js json物件和普通JS物件的區別
定義: JSON是什麼?JSON是JS的一種簡單資料格式,JSON是JavaScript原生格式,它是一種嚴格的js物件的格式,JSON的屬性名必須有雙引號,如果值是字串,也必須是雙引號。 問題: JSON是什麼?(JSON和JavaScrip物件有什麼區別?)如何
Python中的可變物件和不可變物件
什麼是可變/不可變物件 不可變物件,該物件所指向的記憶體中的值不能被改變。當改變某個變數時候,由於其所指的值不能被改變,相當於把原來的值複製一份後再改變,這會開闢一個新的地址,變數再指向這個新的地址。 可變物件,該物件所指向的記憶體中的值可以被改變。變數(準確的說是引用)改變後,實際上是其所指的值直接發生
new物件和反射得到物件的區別
1. 在使用反射的時候,必須確保這個類已經載入並已經連線了。使用new的時候,這個類可以沒有被載入,也可以已經被載入。2.new關鍵字可以呼叫任何public構造方法,而反射只能呼叫無參構造方法。3. new關鍵字是強型別的,效率相對較高。 反射是弱型別的,效率低。4. 反射
C++定義一個物件和new一個物件的區別與聯絡
由於對C++的使用時斷斷續續的,所以今天拿起來看了,C++中一個最大的特色就是有了類的設計思想 基本後面的所有包括封裝,多型,繼承等都是基於類的思想完成的。 類到物件的過程就是例項化的過程,我經常會看到兩種方式,一種是這樣的: class A{ 。。。 } void ma
java中new出來一個物件和定義一個物件賦值為空有什麼不同
new 一個物件出來,比如SomeClass sc=new SomeClass();這個時候已經為sc這個物件分配了指向 new SomeClass() 所建立的記憶體空間。即對這個物件sc進行了例項化。而SomeClass sc=null,則sc物件未進行例項化,是一個空的物件,未能指向任何記憶體空間。
類比JS面向物件和JAVA面向物件的設計思想
(個人理解,如有誤導請指正) 我們都知道JS面向物件是採用原型鏈的方式設計的,JAVA是採用正統的面向物件的思想設計的,通過我的類比分析,我得出一個結論,它們之間本質上是沒有區別的。 先講一講面向物件的特點: 封裝和繼承和多型。 封裝: 最原始的結構化程式設計理念是 “資料結構+操作
Java中JNI的使用詳解第四篇:C/C++中建立Java物件和String字串物件及對字串的操作方法
首先來看一下C/C++中怎麼建立Java物件:在JNIEnv中有兩種方法是用來建立Java物件的:第一種方法:jobject NewObject(jclass clazz , jmethodID methodID, ....):引數解釋:clazz:這個很簡單,就是需要建
Python經驗主義學習之路——可變物件和不可變物件
可變物件與不可變物件 資料型別和變數 Python的資料型別和C++幾乎相同,但是變數的概念和C++/C目前來看有一點差別(但在彙編的角度上看,和彙編中的變數概念差不多),在C/C++中,我們可以把變數在邏輯上抽象成一個帶有名字的盒子,如下簡單程式碼。
c++——繼承類中的子物件和基類物件的初始化
先給結論: (1)派生類中的基類子物件和子物件必須初始化,初始化在派生類的建構函式的初始化列表中,如果初始化列表中沒有進行初始化,則呼叫預設的建構函式進行初始化。 (2)派生類建構函式的呼叫順序: 基類的建構函式 子物件類的建構函式 派生類的建構函式 例子
物理裝置物件和功能裝置物件
在WDM驅動模型中,完成一個裝置的操作。至少需要2個裝置物件共同完成。其中一個是物理裝置物件PDO。還有一個是功能裝置物件FDO。他們之間的關係是附加和被附加的關係。有點像我們處理過濾驅動的樣子。 比