• js总结


    javascript高级程序设计》

    什么是javascript?

    一种直译式脚本语言,是一种动态类型、弱类型、面向对象、基于原型的语言,内置支持类型。它的解释器被称为javascript引擎,为浏览器的一部分,广泛用于客户端的脚本语言。

    Javascript的数据类型有哪些?

    Undefined;null;boolean;string;number;symbol;object

    Undefined:未定义。

    Null:定义了但是为空,即定义了但是还没有赋值。

    Boolean:true/false。

    String:字符串,有最大长度。

    Number:数字,有几种特殊情况:NaN;infinity(无穷大);-infintty(负无穷大)

    什么是对象?

    对象具有唯一性,唯一标识是内存地址,在js中,对象所有的属性和方法都归纳为“属性”(js中对象的行为和状态都能用属性来抽象),并且和c++和java不同,js中对象的属性(包括方法)可以在运行中更改。js语言标准已经说明,js是一门面向对象的语言,我想标准中能这样说,正是因为js的高度动态性的对象系统(js的对象系统具有极高的灵活性)。js是基于原型的面向对象的脚本语言,es6中引入了class定义类的方式,new和function搭配的怪异方式终于可以退休了,任何场景winter都推荐使用class类的写法。类的写法实际上也是由原型运行时承载的,逻辑上javascript认为每个类是由共同原型的一组对象,类中定义的方法和属性则会被写在原型对象之上。

    面对对象和基于对象有什么区别?

    面向对象的三大特点(封装,继承,多态)缺一不可。通常“基于对象”是使用对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说“基于对象”没有继承的特点。而“多态”表示为父类类型的子类对象实例,没有了继承的概念也就无从谈论“多态”。现在的很多流行技术都是基于对象的,它们使用一些封装好的对象,调用对象的方法,设置对象的属性。但是它们无法让程序员派生新对象类型。他们只能使用现有对象的方法和属性。所以当你判断一个新的技术是否是面向对象的时候,通常可以使用后两个特性来加以判断。面向对象”和“基于对象”都实现了“封装”的概念,但是面向对象实现了“继承和多态”,而“基于对象”没有实现这些,的确很饶口。简单地说:基于对象不能继承,更谈不上多态.

     

    有哪些方法可以获取原型对象?

    1:从构造函数获取原型对象

    构造函数.prototype

    2:从对象实例获取父级原型对象

    a:对象实例._proto_   (有兼容性问题,不建议使用)

    b:object.getprototypeof(对象实例)

    javascript中的对象有哪些?

    宿主对象(取决于js的运行环境,比如运行在浏览器则由windos对象)

    内置对象(内置对象又分为:固有对象;原生对象;普通对象)

    宏观任务和微观任务有什么区别?

    宿主发生的任务叫宏观任务,js引擎发起的任务叫微观任务,微任务优先于宏任务。我们首先应该形成一个感性的认知:一个javascript引擎会常驻于内存中,它等待着我们(宿主)把js代码或者函数传递给它执行。

    确定异步代码执行顺序,我们这样总结:

    1:首先我们分析有多少个宏任务;

    2:在每个宏任务中,分析有多少个微任务;

    3:根据调用次序,确定宏任务中的微任务执行次序;

    4:根据宏任务的出发规则和调用次序,确定宏任务的执行次序;

    5:确定整个顺序。

    哪些语句会因为let而产生作用域?

    var声明变量有很多瑕疵,后来引入了let。为了实现let,js在运行时引入了块级作用域。也就是,在let出现之前,js的if for等语句皆不会产生作用域。简单统计,以下语句会产生let的使用的作用域:for;if;switch;try/catch/finally。题外话:立即执行函数可以构造一个新的域,从而控制var的范围(立即执行函数前应该加分号,或者加void) 

     

    js代码到底要不要加分号?

    关于分号,大部分时候不用加分号,少部分要注意:

    1:以括号开头的语句,如立即执行函数

    2:以数组开头的语句,可能被解析成下标

    3:以正则表达式开头的语句,斜杠可能被解析成除号

    4:以template开头的语句

     

     

     

     

  • 相关阅读:
    JS 判断一个字符串是否包含在一个数组中
    CSS溢出文本省略(text-overflow)
    C++ const
    Neural Network Virtual Machine
    RFCN配置参数
    推荐系统实战(1)
    决策树
    神经网络之全连接层详解
    [专题论文阅读]【分布式DNN训练系统】 FireCaffe
    不见了的一块钱
  • 原文地址:https://www.cnblogs.com/llqwm/p/11582457.html
Copyright © 2020-2023  润新知