admin 管理员组

文章数量: 887085


2024年1月19日发(作者:动漫男头可爱帅气 阳光)

ng 原理

ng是JavaScript中非常常用的方法,被用来确定JavaScript对象的类型。它是Object对象原型上的方法,因此对于所有的Javascript对象,都可以使用该方法。当我们使用该方法时,它会返回一个表示该对象类型的字符串。在这篇文档中,我们将会深入了解ng方法是如何工作的以及它是如何帮助我们判断对象类型的。

## toString()方法的语法

ng()的语法如下:

```javascript ng() ``` 其中obj是需要被检测类型的对象。该方法返回一个由"[object"和结果字符串后接一个']'组成的字符串。结果字符串表示对象的类型。

例如:typeof操作符不能准确地判断对象的类型,如果我们要判断一个数组的类型,typeof会将其判断为object类型。 ```javascript let arr = [1, 2, 3];

(typeof arr); //输出结果为object

(ng()); //"[1, 2, 3]" ``` 从结果可以看出,arr的类型是object类型,而我们实际上想要获取的是数组类型。那么我们如何判断呢?

ng方法就可以为我们提供获取对象类型的正确方法。

## 基础实现原理 当我们调用ng时,JavaScript会将该调用传递给我们需要检查类型的对象。因为ng是一个函数,所以传递给它的唯一参数是this,而且该参数是一个隐式参数。具体如下: ```javascript

(obj) ``` 由于toString是ype上的方法,因此我们传递给它的参数应该是一个对象,而ng方法本身却没有传递参数。这就是为什么我们需要用call将它与需要检查类型的对象连接起来。该方法可以指定函数内的this关键字上下文。因此,我们将检查类型的对象作为首个参数传递给了toString方法,并使用call方法将ng作为一个函数来执行。这样JavaScript就会在上下文对象上执行ng方法,从而返回一个表示该对象类型的字符串。例如,考虑对于数组的实现:

```javascript let arr = [1, 2, 3]; let type =

(arr);

(type); //输出结果是"[object Array]" ```

我们使用call方法将ng函数上下文置于arr上,这就意味着我们正通过toString函数来

确定arr的类型。这意味着ng不仅仅是一个简单的toString()方法调用。它实际上是一个高级功能的方法,它可以用来判断一个对象的类型。当我们调用ng方法,并将我们需要检测类型的对象作为this参数传递时,JavaScript会在上下文对象上执行该方法,并返回一个表示该对象类型的字符串。

## 返回值的结构 ng()返回的结果结构总是为"[object XXX]"。其中XXX表示需要检测的对象的构造函数的名称。例如,如果一个对象由JavaScript中Array构造函数创建,那么结果将是"[object Array]"。这种结果的结构通常被用来确定对象的类型。例如,如果结果字符串是"[object Array]",那么这个对象的类型就是数组类型。

## 返回值的例子 下面是一些例子来展示ng()方法如何返回其结果字符串: ```javascript let str = "Hello, world";

((str)) //

"[object String]"

let num = 1;

((num)) //

"[object Number]"

let arr = [1, 2];

((arr)) //

"[object Array]"

let obj = {key: "value"};

((obj)) //

"[object Object]" ``` 当我们将不同的JavaScript值传递给ng方法时,该方法会根据值的类型而返回不同的结果字符串。在上述例子中,我们已经看到了处理字符串、数字、数组和对象的情况。

## 实现自定义判断类型的toString()方法

ng方法不仅仅是用来判断JavaScript值得类型,我们还可以自定义一个toString方法通过它来判断类型。例如,我们想判断一个Date对象的类型,我们可以重写ng方法,这样当我们调用toString方法时将返回"[object

Date]"。 ```javascript ng =

function() { return '[object Date]'; } let

date = new Date();

((date));

// "[object Date]" ``` 当我们重写ng方法并将其绑定到Date对象上时,date对象的结果字符串就变成了"[object Date]"

## 总结 ng方法是JavaScript中最常用的方法之一。它通过返回一个表示对象类型的结果字符串,为我们提供了一种方式来确定一个值的类型。当我们通过(obj)方法调用这个函数时,JavaScript会将该调用传递给需要检查类型的对象,并根据它的构造函数的名称来生成结果字符串。这在处理通过语言内置类型(如数字和字符串)定义的值时非常有用,也可以在自定义类型时以相同的方式使用。

此外,我们还可以通过重写ng方法来自定义返回结果字符串,以便更好地处理自己创建的类型对象。这是非常有趣和有用的。因此,ng方法不仅仅是一个用于确定对象类型的简单方法,还可以按需定制。


本文标签: 类型 对象 方法