关于字符串也可以是对象,引发的对typeof的思考。

本文深入探讨了JavaScript中创建对象的三种方法:对象直接量、New方法和Object.create方法,并解析了函数对象与普通对象的区别及typeof关键字的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景

今天在看JS教程时,发现以下这个例子:

var x="john";
var y= new String("jhon");
typeof x;//返回String
typeof y;//返回Object

我想的是对于typeof返回值的追问。
后来在百度发现了这个问题的语言描述:JS继承之原型链继承。
简单说就是:

  1. typeof
  2. prototype
  3. __proto__

这三个关键字的区别。

写在前面

首先是看了@“陌上寒的简书”关于JS原型和原型链的讲解,感觉自己懂了一些。这里进行复述。另外:感谢前辈的指点!陌上寒的简书

问题解答

对象创建

首先我们要从JS创建对象的三个方法说起。
JS创建对象有三种方法分别是:
1、对象直接量

var a1 ="A";
var a2 ={x:12,y:13};

2、New方法

var b1 = new Object();
var b2 = new Array();
function() fun{
	console.log("这是一个自定义的构造函数")
};
var c1 = new fun(); 

3、Object.creat方法

const d1 = Object.creat({x:1});
const d2 = Object.creat(Object.prototype{
			foo:{
		writable: true,
        configurable: true,
        value: "hello"
}
})
const d3 = Object.create(null)
var e1 = {};
var e2 = new Object();
var e3 = Object.create(Object.prototype)

要知道JS中万物皆对象,我们把创建出来的对象分为函数对象和普通对象。可以通过typeof来判断。一般普通对象返回Object而函数对象返回对应的function。
那么普通对象和函数对象的区别是什么?
typeof

对象分类

2018/11/09更新
今天在地铁上又重新温故了一遍老哥的博客。
紧接着昨天的问题我们给出函数对象和普通对象的一些区别:
函数对象可以创建简单对象:

function fun (){
	console.log("这是一个自定义构造函数")
};
var object = new fun();

可以通过typeof来判断

function f1(){};
typeof f1//return "function"
var o1 = new f1();
typeof o1//return "object"
var o2 = {};
typeof o2//return" object"

复习函数对象的创建方法

在这里复习一下创建函数对象的方法:

function f1(){};
等价于
var f1 = new function();
function f2(a,b){
	window.alert(a+b);
}
f(1,2);
var f2 = new function(’a','b',alert)
等价于
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值