js逆向之prototype(原型对象)和new

js中的应用

注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。

在js逆向中的应用:

function n() {
    //其中代码省略
} //函数对象

n.prototype.xxx=function() {} //给对象添加一个叫xxx的方法

//以后遇到n.prototype.xxx这种格式时,n必须使用new来实例化后,后续代码中才可以使用n.xxx方法

prototype

所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。

JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。

使用 prototype 属性就可以给对象的构造函数添加新的属性或方法:
例子:

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}
 
Person.prototype.nationality = "English";
function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}
 
Person.prototype.name = function() {
  return this.firstName + " " + this.lastName;
};

new

在JavaScript中,new运算符用于创建一个自定义对象实例,或者是一个构造函数内置对象的实例。

  • new 命令的作用,就是执行构造函数,返回一个实例对象。
var Vehicle = function () {
 this.price = 1000;
};
var v = new Vehicle(); //令构造函数 Vehicle 生成一个实例对象,保存在变量 v 中
v.price // 1000 
//new 命令执行时,构造函数内部的 this ,就代表了新生成的实例对象, this.price 表示实例对象有一个 price 属性,值是1000。

注意:

  • 下面两行代码是等价的,但是为了表示这里是函数调用, 推荐使用括号 。

    // 推荐的写法
    var v = new Vehicle();
    // 不推荐的写法
    var v = new Vehicle;
    `
    
    

构造函数

  • 面向对象编程的第一步,就是要生成对象。通常需要一个模板,表示某一类实物的共同特征,然后对象根据这个模板生成。
  • JavaScript 语言使用构造函数(constructor)作为对象的模板。 “构造函数”,就是专门用来生成实例对象的函数。
  • 它就是对象的模板,描述实例对象的基本结构。一个构造函数,可以生成多个实例对象,这些实例对象都有相同的结构。
  • 为了与普通函数区别,构造函数名字的第一个字母通常大写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值