【修订中】js 中apply call bind 用法

一、call、apply可以翻译成继承或者借调 区别:传参不同

  • 可以调用函数
  • 可以改变函数中this的指向

二、js 语法词法:

  • 普通函数

构造函数:

  • 为什么不在构造函数中写方法

    function Student(n, a) {
    this.uname = n;
    this.age = a;
    this.sayHi = function () {
    console.log('大家好', this.uname);
    }
    }

    // sayHi = function () {
    // console.log('大家好', this.uname);
    // }
    // // 二.在原型中定义方法
    // Student.prototype.sayHi = function () {
    // console.log('大家好');

    // 三.实例化对象
    var stu = new Student('xiaoming', 20);
    var stu1 = new Student('xiaomei', 18);

    // console.log(stu.sayHi)
    // console.log(sayHi())
    // 四.测试
    console.log(stu.sayHi === stu1.sayHi); false

只要new 一次 就会新开一个新的空间地址 如果有1万个 就会开1万个空间地址,就会浪费地址资源,所以不在构造函数中写方法,那如何解决这个问题呢 就是使用原型对象解决

解决方法是(也不支持):这样写虽然显示true 但是作为普通函数就会出现undeinfd

复制代码
function Student(n, a) {
    this.uname = n;
    this.age = a;
    this.sayHi = sayHi
}

sayHi = function () {
    console.log('大家好', this.uname);
}
// // 二.在原型中定义方法
// Student.prototype.sayHi = function () {
//     console.log('大家好');

// 三.实例化对象
var stu = new Student('xiaoming', 20);
var stu1 = new Student('xiaomei', 18);

stu.sayHi()
sayHi()   //如果拿普通方法去调用的时候 就会出现大家好 undefind 
// 四.测试
console.log(stu.sayHi === stu1.sayHi); true
所以针对上面这些问题的想法 共享方法就是从原型对象上处理

原型对象

实例对象

原型模式:方法共享

构造函数与原型对象的关系 函数一定有一个prototype 实例对象(对象)一定有_proto_ 他俩是相等的

实例对象与原型对象的关系

在构造函数中定义属性

在原型中定义方法

只要是引用类型都存在__proto__ 属性 哪些是引用类型?对象 数组 函数

只要是函数类型都存在 prototype

函数的__proto__指向的是什么?

函数的prototype 指向的是什么?

相关推荐
想吃火锅10052 天前
【前端手撕】instanceof
前端·javascript·原型模式
UXbot2 天前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app
UXbot2 天前
如何选择适合公司项目的UI设计工具?企业选型指南
前端·低代码·ui·团队开发·原型模式·设计规范·web app
UXbot2 天前
原型设计工具如何帮助新人快速进入产品行业?
前端·低代码·ui·交互·团队开发·原型模式·web app
sunny.day7 天前
js原型与原型链
开发语言·javascript·原型模式·js原型链
UXbot8 天前
AI网页开发工具能替代工具吗?5大平台对比
前端·人工智能·低代码·ui·原型模式·web app
weixin_307779138 天前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
swordbob8 天前
prototype 注入到 singleton 里,prototype是否还是线程安全的
安全·spring·单例模式·原型模式
isNotNullX9 天前
企业数据中台建设,ETL工具选错了会踩哪些坑?
数据仓库·etl·原型模式
半个烧饼不加肉9 天前
JS 底层探究-- 普通函数和构造函数
开发语言·javascript·原型模式