js基础 JavaScript简称:JS

JS分三个部分:

  1. ECMAScript标准---基础的语法
  2. DOM Document Object Model 文档对象模型
  3. BOM Browser Object Model 浏览器对象模型

什么是JS? 前面的文章有更详细的解释,自行查找

  1. 是一门脚本语言
  2. 是一门解释性语言
  3. 是一门弱类型语言
  4. 是一门基于对象的语言
  5. 是一门动态类型的语言

动态页面 :页面由 html + css + js 组成,客户端向服务器发送请求,服务器那边没有页面,是动态的生成,返回给客户端。

js最初的目的 : 解决用户和服务器之间的交互问题。
js现实应用 : 做特效,游戏,移动端,服务端。

编程思想

面向过程:所有的事情都是亲力亲为,注重的是过程。
面向对象:提出需求,找对象,对象解决,注重的是结果。
js不是一门面向对象的语言,是基于对象的语言,js来模拟面向对象。

面向对象的特性:封装,继承,多态,(抽象性)
封装:就是包装,把一些重用的内容进行包装,在需要的时候,直接使用
把一个值,存放在一个变量中,把一些重用的代码放在函数中,把好多相同功能的函数放在一个对象中,把好多功能的对象,放在一个文件中,把一些相同的内容放在一个对象中
继承:类与类之间的关系,js中没有类的概念,js中有构造函数的概念,是可以有继承的,是基于原型
多态:同一个行为,针对不同的对象,产生了不同的效果

创建对象三种方式

  1. 字面量的方式
  2. 调用系统的构造函数
  3. 自定义构造函数方式
// 自定义构造函数方式
function Person (name,age,sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sayHi = function() {
        console.log("你好!!!");
    }
}
// 创建对象 -- 》 实例化一个对象的同时对属性进行初始化
var per = new Person("萌嘟嘟",20,"女");

自定义构造函数方式创建对象都做了哪些工作???

  1. 开辟空间存储对象
  2. 把this设置为当前的对象
  3. 设置属性和方法的值
  4. 把this对象返回

总结:
共同点: 都是函数,都可以创建对象,都可以传入参数
不同点:
1、工厂模式:函数名是小写的;有new,并且有返回值;new之后的对象是当前的对象;直接调用函数就可以创建对象
2、自定义构造函数方式:函数名是大写的(首字母大写);没有new,并且没有返回值;this当前的对象;通过new的方式创建对象

实例对象和构造函数之间的关系是什么???

  1. 实例对象是通过构造函数来创建的---创建的过程叫实例化
  2. 如何判断对象是不是这个数据类型?
    (1). 通过构造器的方式 实例对象.构造器==构造函数名字
    (2). 对象 instanceof 构造函数名字,尽可能的使用这种方式来识别

原型 (重点)

通过原型来解决---------数据共享,节省内存空间,作用之一

  1. 实例对象中有__proto__这个属性,叫原型,也是一个对象,这个属性是给浏览器使用,不是标准的属性----->__proto__----->可以叫原型对象。
  2. 构造函数中有prototype这个属性,叫原型,也是一个对象,这个属性是给程序员使用,是标准的属性------>prototype--->可以叫原型对象。
  3. 实例对象的__proto__和构造函数中的prototype相等--->true ,又因为实例对象是通过构造函数来创建的,构造函数中有原型对象prototype ,实例对象的__proto__指向了构造函数的原型对象prototype

总结
实例对象中有个属性, __proto__ ,也是对象,叫原型,不是标准的属性,浏览器使用的
构造函数中有一个属性,prototype,也是对象,叫原型,是标准属性,程序员使用

原型: __proto__或者是prototype,都是原型对象,
原型的作用: 共享数据,节省内存空间

构造函数、实例对象、原型对象三者之间的关系???
  1. 构造函数可以实例化对象
  2. 构造函数中有一个属性叫prototype,是构造函数的原型对象
  3. 构造函数的原型对象(prototype)中有一个constructor构造器,这个构造器指向的就是自己所在的原型对象所在的构造函数
  4. 实例对象的原型对象(__proto__)指向的是该构造函数的原型对象
  5. 构造函数的原型对象(prototype)中的方法是可以被实例对象直接访问的

原型语法

function Student(name, age, sex) {
      this.name = name;
      this.age = age;
      this.sex = sex;
    }
//简单的原型写法
Student.prototype = {
      //手动修改构造器的指向
      constructor:Student,
      height: "188",
      weight: "55kg",
      study: function () {
        console.log("学习好开心啊");
      },
      eat: function () {
        console.log("我要吃好吃的");
      }
    };

    var stu=new Student("萌萌哒",18,"girls");
    stu.eat();
    stu.study();
    console.dir(Student);
    console.dir(stu);

原型中的方法,是可以相互访问的。
原型对象中的方法,可以相互调用。

实例对象使用的属性或者方法,先在实例中查找,找到了则直接使用,找不到则,去实例对象的__proto__指向的原型对象prototype中找,找到了则使用,找不到则报错

本站以现代、古代情诗为主,情诗网创办于2013年,以原创爱情诗歌、经典情诗、现代情诗、古代情诗、英文情诗、情诗绝句为主并收集古诗、古诗词、诗歌大全、诗词名句的文学门户。方便您下次继续阅读;可以放在浏览器的收藏夹中(快捷键Ctrl+D);或者看到喜欢或者有趣的诗词可以通过分享按钮给你的好友分享;情诗网是目前最全情诗大全网站之一。并欢迎广大诗歌爱好者阅览投稿!喜欢本站的话请大家把本站告诉给你朋友哦!地址是 www.qingshiwang.com !