欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

重新开始JavaScript(四)--关于对象

程序员文章站 2022-07-15 17:05:59
...

关于对象

  • 概念:对象是具体到某一个事物,具有一定的特征和行为。
  • 面向对象:可以创建自定义类型,支持继承和多态。JAVA/C++/C#
  • 基于对象:无法创建自定义类型,不能很好的支持继承和多态。 JavaScript(没有接口,抽象类等概念)
    • JavaScript 创建对象一般用 new Object()或使用{}; 也可以自己写一个构造函数来创建对象。
    • js对象是无序属性的集合;可看作键值对类型,值可以是数据可以是函数。
    • 属性可用obj . prop 或者obj[‘prop’]调用访问
//代码表示
var dog = new Object();
var cat= new Object();
var o = {};
dog.name='阿花';
cat['name'] = '阿白';
o.name = "张三";
//调用属性方式
console.log(dog.name);//阿花 
console.log(dog['name']);// 阿花
console.log(cat.name);//阿白
console.log(cat['name']);//阿白
console.log(o.name);//张三
  • 目的:封装一些数据。

this

  • 谁调用,this就是谁,this始终是当前对象。
  • window是js的*对象。

对象字面量和JSON

<script>
    //对象字面量
    var o = {
        name:"zs",
        age:18,
        have:{},
        say:function(){
            console.log("hello");
        }
    };
    //json JavaScript Object Notation
    //和对象字面量的区别,就是属性需要使用引号引起 一种规范
    var o = {
        'name':'ls',
        'sex':18
    }

</script>

forin

用于遍历数组或者对象的属性。

<script>
   var obj = {
         name:"zs",
         age:18,
         have:{},
         say:function(){
             console.log("hello");
         }
     };

     for (var key in obj) {
         //输出属性名+属性值 name---zs,age---18...
         //如果写成obj.key或obj['key'],则报undefined错误
         console.log(key+'----'+obj[key]);

     }
</script>

基本类型/简单类型/复杂类型当参数

<script>
//基本类型
//只有栈,传递过程是把变量复制一份,修改函数内部变量,对外部变量无影响
function  f1(x){
    x = 100;
}
var x = 1;
f1(x);
console.log(x);// 1

//简单类型
//同是复制栈上的地址,但指向同一个堆内存对象,无论操作谁,对象改变
function f2(o){
    o.name = "zs1";
}
var obj = {
     name:"zs",
     age:18
}
f2(obj);
console.log(obj.name);// zs1

//复杂类型
//复制栈地址,指向 堆的同一对象,修改对象,结果改变
function f3(arr){
    arr[0] = 10;
}
var array = [1,2,3];
f3(array);
console.log(array);//10,2,3
</script>
相关标签: JavaScript