寫javascirpt程式碼時,typeof和instanceof這兩個運算子時不時就會用到,堪稱必用。但是!使用它們總是不能直接的得到想要的結果,非常糾結,普遍的說法認為“這兩個操作符或許是javascript中最大的設計缺陷,因為幾乎不可能從他們那裡得到想要的結果”
typeof
說明:typeof回傳一個表達式的資料類型的字串,傳回結果為js基本的資料類型,包括number,boolean,string,object,undefined,function。
從說明來看,看起來沒什麼問題。
下面的程式碼寫了一個數值變量,typeof後的結果是"number"。
var a = 1; typeof(a)); //=>number
console.log(typeof(a)); //=>object
但是!問題就在於既然呼叫了typeof就應該要準確地傳回一個變數的類型,不管是直接用值創建的還是用類型的構造函數創建的,否則!我還用你做啥!
那麼對於:
a和b變數的型別準確的說來都應該是Number才是想要的結果。
取得類型資訊:
console.log(Object.prototype.toString.call(a));
console.log(Object.prototype.toString.call(b ));
輸出:
複製程式碼
程式碼如下:
var a = 1;
var b = new Number(1);
console.log( Object.prototype.toString.call(a).slice(8,-1));
console.log(Object.prototype.toString.call(b).slice(8,-1));
複製程式碼
程式碼如下:
function is(obj,type) {
複製程式碼
程式碼如下:
var a1=1;
var a2=Number(1 );
var b1="hello";
var b2=new String("hello");
var c1=[1,2,3];
var c2=new Array(1 ,2,3);
console.log("a1's typeof:" typeof(a1));
console.log("a2's typeof:" typeof(a2));
console.log(" b1's typeof:" typeof(b1));
console.log("b2's typeof:" typeof(b2));
console.log("c1's typeof:" typeof(c1));
console .log("c2's typeof:" typeof(c2));
輸出:
The newly created function we use is:
console.log("a1 is Number:" is(a1,"Number"));
console.log("a2 is Number:" is(a2,"Number"));
console.log( "b1 is String:" is(b1,"String"));
console.log("b2 is String:" is(b2,"String"));
console.log("c1 is Array :" is(c1,"Array"));
console.log("c2 is Array:" is(c2,"Array"));
Output:
a1 is Number:true
a2 is Number:true
b1 is String:true
b2 is String:true
c1 is Array:true
c2 is Array:true
Note: typeof It is not useless. The actual use is to detect whether a variable has been defined or assigned a value.
instanceof
Description: Determine whether an object is a certain data type, or whether a variable is an instance of an object.
The instanceof operator is also powerless when used to compare two built-in type variables, and will also be dissatisfied with the result.
console.log("abc" instanceof String); / / false
console.log("abc" instanceof Object); // false
console.log(new String("abc") instanceof String); // true
console.log(new String( "abc") instanceof Object); // true
Reflects the relationship accurately only when comparing custom objects.
function Person() {}
function Man( ) {}
Man.prototype = new Person();
console.log(new Man() instanceof Man); // true
console.log(new Man() instanceof Person); // true

instanceof的作用是判断一个对象是否是某个类的实例,或者是否实现了某个接口。instanceof是一个用于检查对象是否是指定类型的运算符。instanceof运算符使用场景:1、类型检查:可以用来判断一个对象的具体类型,以便根据不同类型执行不同的逻辑;2、接口判断:可以用来判断一个对象是否实现了某个接口,以便根据接口的定义调用相应的方法;3、向下转型等等。

在不同的shell中,使用’!’符号的大多数Linux命令用法可能会有所不同。虽然我提供的示例通常在bashshell中使用,但其他一些Linuxshell可能具有不同的实现,或者可能根本不支持某些对’!’符号的使用。让我们深入了解Linux命令中’!’符号的令人惊奇和神秘的用法。1、使用命令编号从历史记录中运行命令你可能不知道的是,你可以从历史命令中运行一个命令(已经执行过的命令)。首先,通过运行’history’命令找到命令的编号。linuxmi@linuxmi:~/www.linuxmi.

概念1、该运算符用于操作对象的例子,检查对象是否为特定类型(类型或接口类型)。格式2、如果计算器左侧变量所指的对象是操作器右侧类或接口的对象,则结果是真实的。(Objectreferencevariable)instanceof(class/interfacetype)实例packagecom.verify_instanceof;publicclassTestInstanceOf{publicstaticvoidmain(String[]args){//下面四行代码用来证明:instanceof

sql in操作符使用:1、单列匹配,可以使用IN操作符匹配一个列中的多个值;2、多列匹配,IN操作符也可以用于匹配多个列的值;3、子查询,IN操作符也可以与子查询一起使用,子查询是一个嵌套在主查询中的查询语句。

模等于操作符(%)在PHP中是一个非常常用的运算符,用于计算两个数相除的余数。在本文中,我们将深入了解模等于操作符的用法,并提供具体的代码示例帮助读者更好地理解。首先,让我们看一个简单的例子,假设我们需要计算一个数除以另一个数的余数:$a=10;$b=3;$remainder=$a%$b;echo"10除以3的余数是:&

在Java中,instanceof是一个二元运算符,用于检查一个对象是否是一个类的实例,或者是一个类的子类的实例,其语法形式为“object instanceof class”,其中,object是一个对象引用,class是一个类名或者接口名。

在使用instanceof运算符检查对象的类型时,如果结果为true,表示对象是指定类型的实例。但是,编译器并不会自动将对象转换为指定类型,因此需要进行强制类型转换。强制类型转换是将一个对象从一种类型转换为另一种类型的操作。在使用instanceof运算符后,如果确定对象是指定类型的实例,并且希望以该类型进行操作,就需要进行强制类型转换。

在之前的PHP版本中,如果我们没有定义一个变量,直接使用它会导致Undefined variable的错误。但是,在PHP7中,我们可以使用一些新功能来避免这个问题的发生。这些新功能包括两个新的操作符,即:?->和??。它们可以分别解决两种不同类型的问题。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

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

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境