1:东西、结构函数、函数(要领)
标签:
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