相关学习推荐:javascript
前言
说起javascript,大家都知道是一门脚本语言。那么es是什么鬼呢?es全称ecmascript ,是javascript语言的国际标准。
最近总结了条js的基础特性相关的知识点,大家一起看一下吧
1.严格模式使用严格模式,可以在函数内部进行较为严格的全局和局部的错误条件检查严格模式的编译指示,"use strict"创建全局变量,未声明变量,非严格模式下为创建全局变量;严格模式下为抛出referenceerror对变量调用delete操作符,删除变量,非严格模式下为静默失败;严格模式下为抛出referenceerror操作对象情况下:a,只读属性赋值会抛出typeerror;b,对不可配置的属性使用delete操作符会抛出typeerror;c,为不可扩展的对象添加属性会抛出typeerror。重名属性情况:a,非严格模式下没有错误,以第二个属性为准;b,严格模式下会抛出语法错误。函数参数必须唯一,重名参数,在非严格模式下没有错误,只能访问第二个参数;严格模式下,会抛出错误。
function funvalue(value) { value="dada"; alert(value); // dada alert(argument[0]); // 非严格模式:dada // 严格模式模式 dadaqianduan}funvalue('dadaqianduan');复制代码访问arguments.callee和arguments.caller,在非严格模式下没有问题,严格模式下抛出typeerror。2.class基础语法
在javascript当中如何声明一个类?如何定义类中的方法?如何实例化对象?
我们来看看下面的代码示例:
// es5let dada = function(type) { this.type = type}dada.prototype.study = function() { console.log('魔王哪吒');}let da1 = new dada('程序员')let da2 = new dada('it')da1.constructor.prototype.study = function() { console.log('dadaqianduan');}da1.study()复制代码javascript constructor 属性
定义和用法
constructor 属性返回对创建此对象的数组函数的引用。
语法
object.constructor
constructor 是一种用于创建和初始化class创建的对象的特殊方法。
// es6class da { constructor(name) { // 构造函数内写属性 this.name = name; } eat() { // 构造函数外写方法 console.log('i eat') }}const da1 = new da('da1');console.log(da1.name); // da1console.log(da1);复制代码一个类中只能有一个名为“constructor"的方法,出现多次构造函数constructor方法会抛出一个syntaxerror错误在一个构造方法中可以使用super来调用一个父类的构造方法如果没有指定一个构造函数方法constructor方法,就会使用一个默认的构造函数3.类的属性setter和getter
var daobj = { get val() { return ; }, set val(value) { }}复制代码get:
var da = { a: 1, get val(){ return this.a 1; }}console.log(da.val);//2da.val = 100;console.log(da.val);//2class da { constructor(type) { this.type = type } get age() { return 1 } set age(val) { this.realage = val } eat() { console.log('i am eat') }}let da1 = new da('da1')console.log(da1.age)da1.age = 1console.log(da1.realage)复制代码class da { constructor(type, age) { this.type = type this.age1 = age } get age() { return this._age } set age(val) { this._age = val }}复制代码利用set/get实现对element.innerhtml封装
class myhtmlelement { constructor(element) { this.element = element } get html() { return this.element.innerhtml } set html(value) { this.element.innerhtml = value }}复制代码设置一个闭包,通过一定的规则来限制对它的修改:
let myname = 'dada'class da { constructor(type) { this.type = type } get name() { return myname } set name(val) { myname = val }}复制代码4.静态方法
在es5中实现的静态方法:
let da = function (type) { this.type = type this.eat = function() { console.log('i eat') }}da.study = function(book) { console.log('i book');}复制代码let da = function(type) { this.type = type}da.prototype.eat = function() { da.walk() console.log('i am')}da.walk = function(){ console.log('walk')}let da1 = new da('da1')da1.eat()// walk// i am复制代码静态方法在你的实例化对象是找不到的
在es6中的静态方法,标记static
class da { constructor(type) { this.type = type } eat() { console.log('i eat') } static study() { console.log('i study') }}复制代码5.如何继承一个类
在es5中的继承:
// 定义一个父类let da = function(type) { this.type = type}// 定义方法da.prototype.eat = function() { console.log('i am')}// 定义静态方法da.study = function(book) { console.log('i study')}// 定义子类let da1 = function() { // 初始化父类 da.call(this, 'da1'); this.run = function() { console.log('i run') }}// 继承da1.prototype = da.prototype复制代码在es6中的继承
class da { constructor(type) { this.type = type } eat() { // da.walk(); console.log('i eat') } static walk(){ console.log('i walk') }}class da extends da { // 构造函数 //constructor (type) { //super(type) //} run() { console.log('i run') }}let da1 = new da('da1')复制代码6.面向对象编程class
类的声明,属性,方法,静态方法,继承,多态,私有属性
// 类的声明let da = function(typ
电脑中qq邮箱上传附件失败的解决方法阿里云服务器可以建多个网站没阿里云ecs服务器不能访问SEO和SEM有什么区别?优势劣势分析买华为云服务器好吗企业应该建立一个什么样的网站网址进不去说被攻击系统关闭怎么自己建网站,会用到什么软件?