JS1笔记2019.8.8

一.String
1.length 获取字符串长度
2.原始类型值始终存在栈空间,不可更改,最后由浏览器清理;
3.null和undefined没有toString方法,调用会报错;

console.log(nul.toString()); 
console.log(undefined.toString());   //都会报错
//NaN可以用toString()方法
console.log(NaN.toString()); 

4.String()函数可以将任意类型转换成字符串;

console.log(String(null)); //null
console.log(String(undefined)); //undefined

5.单引号/双引号的字符串不支持在编辑器内直接enter换行,结果会报错,需要加 \

6.es6 字符串支持换行,支持模板语法

var a="张三";
var age=18;
document.write(a+"同学,年年"+age+"岁!");

//es6 支持模板语法
document.write(`${a}同学,年年${age}岁!`)

二.函数
1.函数不调用就不会执行;
2.函数调用表达式的值有return返回值决定;

三.js代码执行步骤
1.语法检查;
2.变量提升(提升用var声明的变量,但不提升值)
3.函数提升(提升function声明的,提升整个函数体)
4.执行语句;

四.es6反引号支持换行,支持模板语法

五.字符串方法:

  1. (1)indexOff()在原字符串中寻找指定的第一个字符串,返回相应索引;
var s = "How are you? I'm fine. Think you!"
console.log(s.indexOf("a")); //4

(2)indexOff()可以有第二个参数,意思是从第二个参数的位置处开始查找第一个参数中的字符串,第二个参数必须是数字;

console.log(s.indexOf("r",2)); //5
console.log(s.indexOf(2,"r")); //-1

(3)indexOff()找不到指定字符返回-1;

  1. substring(start,end) 从start开始到end-1结束截取字符串;
    只有一个参数时,直接截取到最后;
    当end<start时。自动交换end和start;
console.log(s.substring(0,4));  //How
console.log(s.substring(4,0));  //How

3.substr(start,length) 从开始位置到截取的长度;

console.log(s.substr(0,3)); //How

4.slice(start,end) 从start开始到end-1结束截取字符串;
end和start不能交换,start<end;
slice永远无法取到最后一位;

console.log(s.slice(-4,-1));  //you

5.trim() 去掉前后空格,中间的无法去掉;
6.charAt() 从字符串里取某个位置的字符;

console.log(s.charAt(1)); //o

7.charCodeAt() 从字符串里取某个字符的编码;

console.log(s.charCodeAt(1)); //111

六.对象
1.构造对象的两种方式

var obj1 = {
				name: "张三",
				age: 21,
				gender: "mail",
				chinese: true,
				sayHello1: function() {
					console.log("hello world1111!")
				},
				sayHello2: function() {
					console.log("hello world2222!")
				}
			}

var obj2 = new Object; //var obj2={}
obj2.name = "李四";

2.访问对象属性的方式:对象.属性名 对象[“属性名”]

console.log(obj1.sayHello1());
console.log(obj1["name"]);
//当不确定访问哪个属性时,在中括号里放变量可以访问
alert(   obj1[user]  ) 
//obj1.user==undefined
//访问对象没有的属性,值为undefined

七.包装对象只有三种:new Boolean/String/Number;

//new 操作符操作(调用)函数,操作结果一定是引用类型
//引用类型的值就可以追加属性
//new 操作符每使用一遍,就是创建一个新的对象(引用类型值)
var obj=new Object;//var obj={}
var obj1=new Object;
// var obj1=obj;
console.log(obj==obj1);//false

//引用类型的两个变量,当他们是存储的同一个空间地址值,他们才相等
var arr1=[];
var arr2=arr1;
arr1[0]=10000;
console.log(arr2);//true

// obj.name="sish"
// console.log(obj.name);

//包装对象new Boolean/String/Number
var Str=new Boolean;
console.log( Str );
Str.name="sishuihua";
console.log( Str.name )

var arr=[];
arr.name="faiugfk";
console.log(arr.name)

//原始类型不可更改
var  str="fakhfa";
console.log( str.length );//(new String(str)).length,临时创建包装对象
str.length=100;//(new String(str)).length,临时创建包装对象销毁
console.log( str.length );//(new String(str)).length,6

# //**字符串(对象/原始值)length 属性都是只读的**

var str1=new String(str);
console.log(str1)
console.log(typeof str1);//object
str1.length=100;
console.log(str1.length);
str1.test="abcd";
console.log(str1.test);
console.log(str1.substring)
str1.substring=100;
console.log(str1.substring)


var bol=new Boolean(true);
bol.length=100;
console.log(bol.length);

var mystr1="fki";
mystr1.test=100;
console.log(mystr1.test)
if(mystr1.test){//undefined,进不了if语句
	console.log(mystr1.length)
}

//数组的length 属性是可读可改的
// var myarr=[1,2,3];
// console.log(typeof myarr);//object
// console.log(myarr.length);
// myarr.length=1000;
// console.log(myarr.length);

var s = "test";
s.len = 4;//给它设置一个属性
var t = s.len;
console.log(t)

八、原始类型与引用类型的区别:
一:原始数据存储于栈内存;引用类型存储于堆内存
二:原始类型值不可更改; 引用类型值是可更改的,(引用类型变量存放的是堆地址,堆地址里面存放值)
三:原始类型值相等就是相等的;两个变量是引用类型必须是对同一个值的引用(相当于引用这个值得地址),两个变量才相等;(也就是堆地址相同,变量就相同)

九对象和原始数据类型的length值不可更改;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值