当前位置:首页 > Web开发 > 正文

1:东西、结构函数、函数(要领)

2024-03-31 Web开发

标签:

JS高级第一天 JS根基介绍

JS的用途:Javascript可以实现浏览器端、处事器端(nodejs)。。。

浏览器端JS由以下三个部分构成:

ECMAScript:根本语法(数据类型、运算符、函数。。。)

BOM(浏览器东西模型):window、location、history、navigator。。。

DOM(文档东西模型):div、p、span。。。

ECMAScript别名es,有以下重大版本:

旧时代:

es1.0。。。es3.1

新时代:

es5

es6(es2015)

es7(es2016)、es8(es2017)

数据类型

根基数据类型——值类型:(数字、字符串、布尔值、null、undefined)

undefined类型?

庞大数据类型——引用类型:(东西)

数组

函数

正则表达式

Date

东西的根基使用 创建一个东西 var student={ name:"李白" , //student有一个name属性,值为"李白" grade:"月朔" , //a、student有一个say属性,值为一个函数 //b、student有一个say要领 say:function(){ console.log("你好"); }, run:function(speed){ console.log("正在以"+speed+"米/秒的速度奔跑"); } } 东西是键值对的调集:东西是由属性和要领组成的 (ps:也有说法为:东西里面皆属性,认为要领也是一个属性)

name是属性 grade是属性

say是要领 run是要领

东西属性操纵 获取属性: 第一种方法:.语法

student.name 获取到name属性的值,为:"李白"

student.say 获取到一个函数

第二种方法:[]语法

student["name"] 等价于student.name

student["say"] 等价于student.say

号外:2种方法的差异:

.语法更便利,但是坑对照多(有局限性),好比:

.后面不能使用js中的关键字、保存字(class、this、function。。。)

.后面不能使用数字

var obj={}; obj.this=5; //语法错误 obj.0=10; //语法错误

[]使用更广泛

o1[变量name]

["class"]、["this"]都可以随意使用 obj["this"]=10

[0]、[1]、[2]也可以使用

obj[3]=50 = obj["3"]=50

思考:为什么obj[3]=obj["3"]

甚至还可以这样用:["[object Array]"]

jquery里面就有这样的实现

也可以这样用:["{abc}"]

给东西添加了{abc}属性

设置属性

student["gender"]="男" 等价于: student.gender="男"

含义:如果student东西中没有gender属性,就添加一个gender属性,值为"男"

如果student东西中有gender属性,就改削gender属性的值为"男"

案例1:student.isFemale=true

案例2:student["children"]=[1,2,5]

案例3:

student.toShanghai=function(){ console.log("正在去往上海的路上") } 删除属性

delete student["gender"]

delete student.gender

通过结构函数创建东西 结构函数创建东西的例子:

var xiaoming = new Object() --> var xiaoming = {};

var now = new Date()

var rooms = new Array(1,3,5) --> var rooms = [1,3,5]

var isMale=http://www.mamicode.com/123/; ==> var isMale=new RegExp("123")

isMale是通过RegExp结构函数创建出来的东西

isMale是RegExp结构函数的实例

以上例子中,Object、Date、Array都是内置的结构函数

自界说一个结构函数来创建东西

结构函数

function Person(name,age){ this.name=name; this.age=age; } var p1=new Person("赵云",18)

说明:p1就是按照【Person结构函数】创建出来的东西

结构函数的观点

任何函数都可以当成结构函数
function CreateFunc(){ }

只要把一个函数通过new的方法来进行挪用,我们就把这一次函数的挪用方法称之为:结构函数的挪用

new CreateFunc(); 此时CreateFunc就是一个结构函数

CreateFunc(); 此时的CreateFunc并不是结构函数

关于new Object()

new Object()等同于东西字面量{}

结构函数的执行过程

var p1=new Person();

1、创建一个东西 (我们把这个东西称之为Person结构函数的实例)- _p1

2、创建一个内部东西,this,将this指向该实例(_p1)

3、执行函数内部的代码,此中,操纵this的部分就是操纵了该实例(_p1)

4、返回值:

a、如果函数没有返回值(没有return语句),那么就会返回结构函数的实例(p1)

b、如果函数返回了一个根基数据类型的值,那么本次结构函数的返回值是该实例(_p1)

function fn(){ } var f1=new fn(); //f1就是fn的实例 function fn2(){ return "abc"; } var f2=new fn2(); //f2是fn2结构函数的实例

c、如果函数返回了一个庞大数据类型的值,那么本次函数的返回值就是该值

function fn3(){ return [1,3,5]; //数组是一个东西类型的值, //所以数组是一个庞大数据类型的值 //-->本次结构函数的真正返回值就是该数组 //-->不再是fn3结构函数的实例 } var f3=new fn3(); //f3还是fn3的实例吗?错 //f3值为[1,3,5]

担任 JS中担任的观点:

通过【某种方法】让一个东西可以访谒到另一个东西中的属性和要领,我们把这种方法称之为担任 并不是所谓的xxx extends yyy

为什么要使用担任?

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30357.html