javascript new操作符做了什么事情?实现new操作

1、创建了一个空对象obj。

2、将实例的原型obj.__proto__指向构造函数的原型对象Func.prototype。

3、绑定this值(让Func中的this指向obj,并执行Func的函数体)。

4、判断Func的返回值类型:如果无返回值 或者 返回一个非对象值,则将 obj 作为新对象返回;否则会将 result 作为新对象返回。

 

            function Func(name,age){
                this.name=name;
                this.age=age;
            };
            function mock(constructor,...params){
                let obj = {};
                obj.__proto__=constructor.prototype;
                let result = constructor.apply(obj,params)
                result == 'obj' ? obj=result : obj
                return obj
            };
            console.log(mock(Func,'xhj',20)) 

 

推荐这些文章:

javascript 集合操作

 集合常见方法

 

//集合封装
function set(){
this.items={}
}
set.prototype.add=function(val){
if(this.has(val))return false
this.items[val]=val
return true
}
set.prototype.has=function(val){
return this.items.hasOwnProperty(val)
}
set.prototype.remove=function(val){
if(!t...

javascript 中 new 操作符的原理

我们知道采用 new 操作符会创建一个对象实例,例如:let p = new Person();;而具体是怎样创建的呢?
实际上会执行下面的三个步骤:

创建一个空对象
这个空对象指向该对象的原型对象
更改该对象的this指向这个空对象(修改 作用域 )

用代码解释
// 1. 创建一个空对象
let p = {};
// 2. 这个空对象指向该对象的原型对象
p.__proto__ = Person.prototype;
// 3. 更改该对象的this指向这个空对象(修改 作用域 )
Person.apply(p);

根据原理我们可以自己创建一个实现 new 操作符的函数
funct...

javascript 实例化对象问题

问题

<html>
<head>
<script>window.onload = function () {    new Click("btn");};
function Click(id) {    var _this = this;    this.oBtn = document.getElementById(id);    this.oBtn.onclick = function () {        _this.sayHello();    };}
Click.prototype.sayHello = function ...

javascript的原型链解析(相信你也可以)

好久没发博客 这学期转前端了
首先挂上我看的资料
感谢这两位大佬
说明了原型链的产生缘由
Javascript继承机制的设计思想 - 阮一峰的网络日志 (ruanyifeng.com)
完整的说明的原型链的结构
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)_码飞_CC的博客-CSDN博客_js prototype
建议先看上面两篇文章
个人总结

js万物皆对象 函数实际上也是一个对象

__proto__ 在浏览器的控制台打印是[[prototype]]

__proto__和coustructor属于对象里的东西
prototype属于函...

原型链检测之instanceof

 
 

function A(){}
function B(){}
function C(){}
let c=new C();
B.prototype=c;
let b=new B();
A.prototype=b;
let a=new A();

console.log(a instanceof A);
console.log(b instanceof A);

 

...

new 的原理是什么?通过 new 的方式创建对象和通过字面量 创建有什么区别?

涉及面试题: new 的原理是什么?通过 new 的方式创建对象和通过字面量 创建有什么区别? 在调用 new 的过程中会发生四件事情 新生成了一个对象; 链接到原型; 绑定 this ; 返回新对象。 根据以上四个过程,我们也可以试着来自己实现一个 new 创建一个空对象, 获取构造函数, 设置空对象的原型, 绑定 this 并执行构造函数, 确保返回值为对象。 function create() { let obj = {} let Con = [].shift.call(arguments) obj.__proto__ = Con.prototype l...

面试官:熟悉JS中的new吗?能手写实现吗?

目录1 new 运算符简介2 new 究竟干了什么事3 模拟实现 new 运算符4 补充
⚠ 预备知识:

了解原型和原型链
了解this绑定

1 new 运算符简介

MDN文档:new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

class Person {
constructor(name) {
this.name = name;
}
}
// 创建自定义对象类型的实例
const person = new Person('小明')
// 创建具有构造函数的内置对象的实例
const date = new Date()

...

JS 对象基本用法(获取对象的键值)

JS 对象基本用法
声明对象的两种语法

let obj1 = {'name': 'Jacky', 'age': 28}
let obj2 = new Object({'name': 'Jacky', 'age': 28})

如何删除对象的属性

let obj = {'name': 'Jacky', 'age': 28}
delete obj.name
delete obj['name']

如何查看对象的属性

let obj = {'name': 'Jacky', 'age': 28}
Object.keys(obj) //查看obj的所有自身属性
...

《JavaScript那些事》--JavaScript手写new方法

手写new方法
在JavaScript中,经常使用new一个构造函数去创建一个对象。
然而我们再了解new标识符的作用后,也能实现一个自己的new。
了解new方法做了哪些事
new一个 构造函数/类 时,new做了一下操作:

创建一个对象
运行构造函数
将构造函数的this指向指向 新创建的对象
返回这个对象

代码实现
准备一个构造函数
function Dog(name){
this.name = name;
}
Dog.prototype.say = function() {
console.log('name is', this.name);
}

实现new
funct...

给对象添加数据

往对象里面添加数据

 
方法一: 直接添加

let obj = {
name: 'sun'
};
// []
let key = 'age';
let value = 18;
obj[key] = value;
// .
obj.age = 18;
console.log(obj, 'obj');
// {name: 'sun', age: 18} 'obj'

  
方法二: 利用扩展运算符…

let objName = {
name: 'sun'
}...

文章标题:javascript new操作符做了什么事情?实现new操作
文章链接:https://www.dianjilingqu.com/51374.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>