2020917王杉

学习内容:

面向对象:

  • 静态方法:

    1. 定义:不需要创建子对象,就可用构造函数直接调用的方法,其实就是将全局函数,找到地方保存而已

    2. 使用静态方法:其实就是把全局函数,强行添加给某个构造函数对象。具体添加到哪个构造函数,要看这个函数做的事儿和谁家的名称更接近

    3. 常见的静态方法:

      ①Array.isArray(obj):判断任意对象是否为数组

      ②Object.defineProperties(obj,props):直接在一个对象上定义一个或多个新的属性或修改现有的属性,并返回该对象

      ③Object.setPrototypeOf(obj,prototype):将一个指定的对象的原型设置为另一个对象或者null(既对象的[[Prototype]]内部属性)

  • 自定义继承

    1. 定义:如果觉得一个对象的整个父对象都不好用,就可以更换这个子对象的父对象

    2. 使用自定义继承:

      ①只修改一个对象的父对象(修改两个对象间的继承关系) 对象.__proto__=新父对象 Object.setPrototypeOf(子对象,新父对象) var father=Object.getPrototypeOf(child)

      ②同时修改多个子对象的爹(修改构造函数原型对象,来修改所有子对象的父对象) 构造函数.prototype=father

    3. 仅基于现有父对象,创建子对象,并扩展自有属性: Object.create()

      ①创建新子对象,继承父对象,扩展子对象自有属性:

      四大特性:value(属性值)、writable(控制是否修改当前属性值)、enumerable(控制是否可用for in遍历这个属性)、configurable(1.是否可以删除该属性2.是否可以修改前两个特性)

ES5:

  • ES5:(核心语法)JavaScript=ECMAScript(核心语法) + DOM(操作网页) + BOM(操作浏览器窗口) (js中很多缺陷 通过ES5添加功能)

  • 严格模式:(比一般JavaScript运行机制要求更严格的模式)

    1. 严格模式分类:①整个块代码或者js文件中1启用 在代码块或js文件的开头插入: "use strict"; ②在一个函数内启用 在function内,函数体顶部插入: "use strict";
    2. 严格模式的规定:①禁止给未声明变量赋值 ②静默失败升级为错误③普通函数调用或匿名函数自调中的this不再默认指向window,而是undefined④禁止使用 arguments.callee
  • JSON对象:(以js对象数据格式表示出来的字符串,轻量级的文本数据交换格式)

    1. JSON数据的基本格式:"名":值 对
    2. 多个数据间使用 , 分隔{"ball":true,"walk":false}
    3. JSON描述对象使用花括号保存对象:"sport":{"ball":true,"walk":false}
    4. JSON保存数组:"sport":["ball","walk"]

    文件交换:

    JSON.parse(string/json)

    var json='{"x":60,"y":30}';
    var jsObj=JSON.parse(json);

    JSON.stringify(object)

    var obj={
    name:"lili",
    age:20
    }
    var jsonObj=JSON.stringify(obj)

  • 对象保护:

    1. 保护js中的对象,它们没有自保能力随时可以替换添加删除它们的属性

    2. 保护对象:命名属性是可以直接使用“.”访问到的属性

      (上面说到过的四大特征)保护单个对象的

      ①数据属性:获取四大特性修改使用其特性

      ②访问器属性:自定义规则保护属性

      (1)将实际属性隐藏起来,半隐藏

      (2)请一个假属性保护它,假属性要顶替原属性的名字

      (因为js是不严格的语言,所以,一旦外人知道受保护的半隐藏的属性名,依然可用 . 直接访问,绕过保镖)

    3. 内部属性:不能用“.”访问到的属性

      ①_proto__②class③extensible

    4. 防篡改:

      ①防拓展:Object.preventExtensions(obj)

      ②密封:Object.seal(obj)

      ③冻结:Object.freeze(obj)

  • Object.create():

    1. 使用:

      ①创建一个子对象,并让新子对象继承指定的父对象

      ②给子对象添加自有属性,必须是以Object.defineProperties类似的语法添加属性

学习心得:

今天学习了很多东西,有些东西有点绕,需要花时间去理解,然后就是还需要学习的太多了,加油!

标签

评论

this is is footer