Javascript 概念类知识

本文总结js中常用的知识,有些几乎用不到,或者属于设计缺陷,但是又必须知道,这些是我开发中总结的,如果有不正确的地方,请指出。

个人代码习惯分享:命名尽量语义化但又比较特殊,这样会避免命名冲突,即使全局局部变量会属于不同域也不要使用同名,长一点没关系,不太会英文怎么办?拼音!

一.变量

1.)在非严格模式下,全局变量不用var也可以直接用,但是这样并不好,会造成歧义,阅读会困难。所以正规的写法是提前声明。

2.)有一个概念叫变量提升,在函数内部,所有的变量都会被提升到函数体上部声明。

function upvar(){
console.log(x);
var x = 0;
}
upvar();//打印undefined

变量声明在打印之后,即使在严格模式下也不会报错,原因是js机制把变量声明提前到函数体第一行,但是未赋值,所以上面的函数相当于:

function upvar(){
var x;
console.log(x);
x = 0;
}
upvar();//打印undefined

那么如果全局变量跟函数内局部变量同名呢?结果也是一样的。函数优先扫描内部函数。

var a = 2;
function samenameA(){
	console.log(a)
	var a = 3;
}
samenameA();//打印undefined

  

变量使用必须提前声明,使用前必须提前赋值。所以在我看来除非脑抽筋,不然不会写出这种代码。属于记住概念即可。

3.)this指向,取决于调用的方式(详见:Javascript的this用法

在全局范围下,this指向window,也就是说可以使用this.变量调用全局变量,this.函数调用全局函数。

在对象内,指向当前对象。

在事件内,指向事件dom。

二.数据类型

JavaScript有五种方法可以确定一个值到底是什么类型,分别是typeof运算符,constructor法,instanceof运算符,Object.prototype.toString方法以及Array.isArray法.

1.)js有五中基本类型,一种引用类型

基本类型:String、Boolean、Number、undefind、null

引用类型:Object(Array、Date、RegExp、Function)

基本包装类型:Boolean、 Number、String

单体内置对象:Global对象、Math对象

基本类型是简单值,所见即所得,引用类型是复杂类型,其值是经过计算得到的。

2.)类型内置方法

object(所有引用对象都有继承):valueOf()、toLocaleString()、toString()

String方法:charAt()、charCodeAt()、concat()、slice()、 substr()、substring()、indexOf()、lastIndexOf()、trim()、toLowerCase()、 toLocaleLowerCase()、 toUpperCase()、toLocaleUpperCase()、match()、replace()、localeCompare()、fromCharCode()

substr,substring,slice解释

{

str.substr(start,[,length])

start开始提取字符的位置。如果为负值,则被看作 strLength + start,其中 strLength 为字符串的长度(例如,如果 start 为 -3,则被看作 strLength-3)。
length可选。提取的字符数

str.substring(indexstart,[,indexend])

如果参数小于0,则为0、如果start大于end,则调转参数位置、如果参数大于string.length,则等于string.length、如果相等则返回空

str.slice(beginslice,[,endslice])

beginSlice从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 sourceLength + beginSlice 看待,这里的sourceLength 是字符串的长度 (例如, 如果beginSlice 是 -3 则看作是: sourceLength - 3)endSlice可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice会一直提取到字符串末尾。如果该参数为负数,则被看作是 sourceLength + endSlice,这里的 sourceLength 就是字符串的长度(例如,如果 endSlice 是 -3,则是, sourceLength - 3)。

}

Boolean:true false 用typeof操作符可以做一些操作

Number:toFixed()、toExponential()、toPrecision()

Array:isArray()、push()、pop()、shift()、unshift()、reverse()、sort()、concat()、splice()、indexOf()、lastIndexOf()、every()、filter()、forEach()、map()、some()、reduce()、reduceRight()

Date:Date.parse()、 Date.UTC()

Global:isNaN()、isFinite()、parseInt()、parseFloat()、encodeURI、encodeURIcomponent()、decodeURI、decodeURIcomponent()、eval()

Math:Math.max()、Math.min()、Math.ceil()、Math.random()、Math.abc()、Math.exp()、Math.log()、Math.pow()、Math.sqrt()、Math.acos()、Math.asin()、Math.atan()、Math.atan2()、Math.cos()、Math.sin()、Math.tan()

三.对象

创建对象的方法

new、{}、object.create()

工厂模式、构造函数模式、原型模式、组合构造函数原型模式、动态原型模式

待更... 

原文地址:https://www.cnblogs.com/benu/p/5724148.html