javascript 原型的理解

本文深入探讨了JavaScript中函数的本质及其实现方式,包括函数声明、函数表达式和使用Function构造函数创建函数的方法。此外,文章还介绍了Function.prototype及其继承属性和方法,如call(),以及如何利用这些特性进行面向对象编程。

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

在 js 中 , 每个函数都是 Function 类型的实例,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针(函数的名字仅仅是一个包含指针的变量而已)。
定义方式:
function test() {  }            // 这是函数声明方式
var test = function(){  };   // 这是函数表达式
这两个 test 就是包含指针的变量

还有一种方式:
var test = new Function(num1,num2,"return num1+num2");
在参数中最后一位是函数体,前面可以是多位参数
这一方式对于理解 函数是对角,函数名是指针 的概念是非常直观的

Function 对象是没有属性与方法的,但是, 因为它本身也是函数,所以它也会通过原型链从Function.prototype上继承部分属性和方法。

原型对象(Function.prototype)
属性:
Function.arguments
Function.length
Function.prototype.constructor  
方法 
Function.prototype.call()
Function.prototype.toString()
等还有一些没有完整举例出来 , 可到以下地址查看
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function

Function 实例从 Function.prototype 继承了一些属性和方法。
如:
{
function Product(name) {
}
Product.prototype.price = 100;
var o = new Product('婚沙')
console.log(o.price);    // 这里会输出 100
}
这里还有一个特性就是优先选择
{  
function Product(name,price) {
    this.price = price;
}
Product.prototype.price = 100;
var o = new Product('婚沙',2000)
console.log(o.price);    // 这里会输出2000
}

换一种说法 Function.prototype(属性) 这个关键定就是存储 Function 的原型对象。
在看一实例:
function Product(name, price) {
  this.name = name;
  this.price = price;
}
function Food(name, price) {
  Product.call(this, name, price);
  this.category = 'food';
}
console.log(new Food('cheese', 5).name);  // expected output: "cheese"
原型方法 call 主要是改变(扩展)调用函数的作用域
Product 函数体中并没有定义 call 方法,当 Product.call 调用时,这个实例通过原型链的查找机制找到Function.prototype上的call方法,让找到的call方法执行




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值