对象
对对象的属性增删改查:
增:mrDeng.wife = “xiaoliu” 直接写。.属性 = “”
删:delete mrDeng.name 就直接把名字删了
改:mrDeng.wife = “xiaoliu” ,换双引号里面的属性
查:console.lgo(mrDeng.属性);
对象的创建方法:
1.var obj = { } planObject 对象字面量/对象直接量
2.构造函数
1)系统自带的构造函数 new Object()
2)自定义
3.大驼峰式运算规则
TheFirstName
构造函数内部原理
–有new发生的隐式三步变换
1.在函数体最前面隐式的加上this ={}
2.执行this.XXX = XXX
3.隐式的返回this
构造函数的实例不仅可以使用本身的属性,也可以使用prototype的属性,而prototype中有一个属性就是constructor,他指向构造函数的原型,在原型中记录,这个原型是哪个构造函数的。
- 1
- 2
示例:
<script type = "text/javascript">
function Student(name,age,sex){
//var this = {
// name : ""
// age : ""
// };
this.name = name;
this.age = age;
this.grade = 2017;
//return this;
}
var student = new Student('zhang',18,'male');
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
包装类
基本包装类型(原始值):
- Number
- String
- Boolean
特性:原始值没有属性和方法,不能给原始值赋属性值
示例:
<script type = "text/javascript">
var num = 4;
num.len = 3;
console.log(num.len);
</script>
//undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
解析:
<script type = "text/javascript">
//包装类
var num = 4;
num.len = 3; //首先看到此句给原始值赋值,是违法语法规则的,所以使用包装类来解决
//new Number(4).len = 3; delete
//系统自动生成一个newNumber(4)(现在不为原始值所以可以赋值)再为其赋属性值len,操作完以上步骤随即销毁。
//new Number(4).len; 此处的new与上面不是一个,上面已经销毁了,这里就没有len属性了
console.log(num.len); //访问到此处,系统发现我们又在访问无效值(仍然是给原始值赋值的遗留连锁问题),于是又进行一步更正(写在此句之上)
</script>
//undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
示例:
<script type = "text/javascript">
var str = "abcd";
str.length = 2;
console.log(str);
</script>
- 1
- 2
- 3
- 4
- 5
解析:
<script type = "text/javascript">
var str = "abcd";
str.length = 2; //给原始值赋值,所以使用包装类
//new String('abcd').length = 2; delete
//new String('abcd').length; //new String是有length属性的,它的length属性值=4
console.log(str.length); //注意:这与前面不同,“.length”是系统自带的属性,而前面的len不是属性
</script>
//4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
示例 :
<script type = "text/javascript">
var str = "abc";
str += 1;
var test = typeof(str);
if(test.length == 6) {
test.sign = "typeof的返回结果可能为string";
}
console.log(test.sign);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
解析:
<script type = "text/javascript">
var str = "abc";
str += 1;
var test = typeof(str); //test = "string"
if(test.length == 6) {
test.sign = "typeof的返回结果可能为string"; //因为前面有test = "string",所以现在是string类型
//new String(test).sign = 'xxx';
}
//new String(test).sign
console.log(test.sign);
</script>
//undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
例题 :
<script type = "text/javascript">
var x = 1;
if(function f(){}) {
x += typeof f;
}
console.log(x);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
解析 :
<script type = "text/javascript">
var x = 1;
if(function f(){}) { // 注意:function外面加了括号,所以变成了表达式,
// 所以就可以立即执行了,在执行后就再也找不到它了
x += typeof f; // 这时的f是找不到的(f is not defined),
//一般这时系统会报错,但是唯独typeof,会返回字符串“undefined”
}
console.log(x);
</script>
// 1undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
例题:
<script type = "text/javascript">
function Person(name,age,sex) {
var a = 0;
this.name = name;
this.age = age;
this.sex = sex;
function sss () {
a++;
console.log(a);
}
this.say = sss;
}
var oPerson = new Person();
oPerson.say();
oPerson.say();
var oPerson1 = new Person();
oPerson1.say();
</script>
//1 2 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
例题:
求x、y、z的值。
<script type = "text/javascript">
var x = 1, y = z = 0;
function add(n) {
return n = n + 1;
}
y = add(x);
function add(n) {
return n = n + 3;
}
z = add(x);
</script>
//1 4 4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
解析:
<script type = "text/javascript">
var x = 1, y = z = 0;
y = add(x);
function add(n) {
return n = n + 3;
}
z = add(x);
</script>
//1 4 4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
函数相同,后面函数覆盖前面的函数。
习题:
计算字符串的长度,字母数字为一个,汉字为两个。
解法一:
<script type = "text/javascript">
var count = str.length;
for(var i = 0; i < str.length; i++){
if(str.charCodeAt(i) > 255){
count ++;
}
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
解法二:
<script type = "text/javascript">
var code = 0;
for(var i = 0 ; i<str.length; i++){
if(str.charCodeAt(i) > 255) {
count +=2;
}else{
count ++;
}
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>
对象
对对象的属性增删改查:
增:mrDeng.wife = “xiaoliu” 直接写。.属性 = “”
删:delete mrDeng.name 就直接把名字删了
改:mrDeng.wife = “xiaoliu” ,换双引号里面的属性
查:console.lgo(mrDeng.属性);
对象的创建方法:
1.var obj = { } planObject 对象字面量/对象直接量
2.构造函数
1)系统自带的构造函数 new Object()
2)自定义
3.大驼峰式运算规则
TheFirstName
构造函数内部原理
–有new发生的隐式三步变换
1.在函数体最前面隐式的加上this ={}
2.执行this.XXX = XXX
3.隐式的返回this
构造函数的实例不仅可以使用本身的属性,也可以使用prototype的属性,而prototype中有一个属性就是constructor,他指向构造函数的原型,在原型中记录,这个原型是哪个构造函数的。
- 1
- 2
示例:
<script type = "text/javascript">
function Student(name,age,sex){
//var this = {
// name : ""
// age : ""
// };
this.name = name;
this.age = age;
this.grade = 2017;
//return this;
}
var student = new Student('zhang',18,'male');
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
包装类
基本包装类型(原始值):
- Number
- String
- Boolean
特性:原始值没有属性和方法,不能给原始值赋属性值
示例:
<script type = "text/javascript">
var num = 4;
num.len = 3;
console.log(num.len);
</script>
//undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
解析:
<script type = "text/javascript">
//包装类
var num = 4;
num.len = 3; //首先看到此句给原始值赋值,是违法语法规则的,所以使用包装类来解决
//new Number(4).len = 3; delete
//系统自动生成一个newNumber(4)(现在不为原始值所以可以赋值)再为其赋属性值len,操作完以上步骤随即销毁。
//new Number(4).len; 此处的new与上面不是一个,上面已经销毁了,这里就没有len属性了
console.log(num.len); //访问到此处,系统发现我们又在访问无效值(仍然是给原始值赋值的遗留连锁问题),于是又进行一步更正(写在此句之上)
</script>
//undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
示例:
<script type = "text/javascript">
var str = "abcd";
str.length = 2;
console.log(str);
</script>
- 1
- 2
- 3
- 4
- 5
解析:
<script type = "text/javascript">
var str = "abcd";
str.length = 2; //给原始值赋值,所以使用包装类
//new String('abcd').length = 2; delete
//new String('abcd').length; //new String是有length属性的,它的length属性值=4
console.log(str.length); //注意:这与前面不同,“.length”是系统自带的属性,而前面的len不是属性
</script>
//4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
示例 :
<script type = "text/javascript">
var str = "abc";
str += 1;
var test = typeof(str);
if(test.length == 6) {
test.sign = "typeof的返回结果可能为string";
}
console.log(test.sign);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
解析:
<script type = "text/javascript">
var str = "abc";
str += 1;
var test = typeof(str); //test = "string"
if(test.length == 6) {
test.sign = "typeof的返回结果可能为string"; //因为前面有test = "string",所以现在是string类型
//new String(test).sign = 'xxx';
}
//new String(test).sign
console.log(test.sign);
</script>
//undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
例题 :
<script type = "text/javascript">
var x = 1;
if(function f(){}) {
x += typeof f;
}
console.log(x);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
解析 :
<script type = "text/javascript">
var x = 1;
if(function f(){}) { // 注意:function外面加了括号,所以变成了表达式,
// 所以就可以立即执行了,在执行后就再也找不到它了
x += typeof f; // 这时的f是找不到的(f is not defined),
//一般这时系统会报错,但是唯独typeof,会返回字符串“undefined”
}
console.log(x);
</script>
// 1undefined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
例题:
<script type = "text/javascript">
function Person(name,age,sex) {
var a = 0;
this.name = name;
this.age = age;
this.sex = sex;
function sss () {
a++;
console.log(a);
}
this.say = sss;
}
var oPerson = new Person();
oPerson.say();
oPerson.say();
var oPerson1 = new Person();
oPerson1.say();
</script>
//1 2 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
例题:
求x、y、z的值。
<script type = "text/javascript">
var x = 1, y = z = 0;
function add(n) {
return n = n + 1;
}
y = add(x);
function add(n) {
return n = n + 3;
}
z = add(x);
</script>
//1 4 4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
解析:
<script type = "text/javascript">
var x = 1, y = z = 0;
y = add(x);
function add(n) {
return n = n + 3;
}
z = add(x);
</script>
//1 4 4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
函数相同,后面函数覆盖前面的函数。
习题:
计算字符串的长度,字母数字为一个,汉字为两个。
解法一:
<script type = "text/javascript">
var count = str.length;
for(var i = 0; i < str.length; i++){
if(str.charCodeAt(i) > 255){
count ++;
}
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
解法二:
<script type = "text/javascript">
var code = 0;
for(var i = 0 ; i<str.length; i++){
if(str.charCodeAt(i) > 255) {
count +=2;
}else{
count ++;
}
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>