JavaScript 高级

本文详细探讨了JavaScript的核心特性,包括它的脚本语言性质、弱类型、基于对象和动态驱动的特点。文章重点讲解了原型、构造函数、实例对象之间的关系,以及如何判断对象类型。此外,还介绍了原型链、数据共享、继承实现方式(如改变原型指向、借用构造函数等)、函数的特性(如arguments、caller)以及call、apply、bind方法。最后,文章提到了闭包的概念及其在缓存数据中的应用,并讨论了递归和拷贝(浅拷贝与深拷贝)的概念。
摘要由CSDN通过智能技术生成

JS最初的目的:解决用户与服务器之间的交互问题

        js:          是一门脚本语言。不用编译,直接执行

                     是一门解释性语言。遇到一行就执行一行。

                     是弱类型语言。      定义变量都用var

                     是基于对象语言。没有面向对象的三大特性:继承 封装 多态,但是可以模拟面对对象的思想(继承 封装 多态)

                     是动态驱动。1. 执行到某一行代码时,才知道变量存储的是什么,知道对象的属性方法,变量的作用等等。

                                           2.对象什么也没有,通过.点语法,就可以给对象添加属性和方法


  .如何判断对象是不是这个数据类型?
   1)通过构造器的方式  实例对象.构造器==构造函数名字    obj.constrouct  == Object  (通过console.dir可以输出对象的结构)

    2)对象instanceof 构造函数名字
推荐使用第二种方式

 

 

   var  obj = new  Student() ; //实例对象

    function Stundent() {  }     //构造函数

实例对象 、构造函数、原型对象关系: 

     1.实例对象是通过构造函数来创建的- --创建的过程叫实例化

             实例化堆栈变化:    1.开辟空间存储对象

                                                2.把this设置为当前对象

                                               3.设置对象的属性和方法

                                               4.返回这个this对象

        构造函数可以实例化对象

       构造函数中有一个属性prototype,是构造函数的原型对象

      构造函数的原型对象(prototype)中有一个constructor构造器 指向的是自己所在的原型对象所在的构造函数

      实例对象的原型对象(__ proto_ ) 指向的是该构造函数的原型对象

      构造函数的原型对象(prototype)中的方法是可以被实例对象直接访问的

 

原型的作用:   一 、进行数据共享,节省内存空间;     //需要共享的数据(属性、方法)都可以写到原型中

                        二、为了实现继承

原型或者构造函数中的对象可以通过this相互调用

对象在调用其构造函数的方法时,如果有多个对象obj1 ,obj2 obj3 都调用同一个方法play(),因为是不同的对象 ,所以obj1.play 是不等于 obj2.play ,这些方法都会开辟一块空间,造成空间浪费,为了节省空间,有两种方法,

一、将函数内的方法 赋值给一个变量 ,在函数体外设置与变量同名的函数  

                                            //好处是只开辟一块空间,坏处是若有另一个变量与函数同名会造成错误,所以采用原型方式

二、采用原型的方式, Object.prototype.play = function () {  }         

                          var obj1 = new  Object("七七"); 

   

如何把局部变量变全局变量?

   将局部变量给window 函数自调用传入window对象

 

改变原型指向 :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值