js構造函數,成員函數詳解


對象之成員函數:

對象不僅只有屬性,還要有行為(函數)

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script language="JavaScript" type="text/javascript">
            function Person(name, age) {
                //傳遞實參初始化屬性
                this.name = name;
                this.age = age;
                //                這就是一個公開的函數,這樣的話浪費資源
                this.show = function() {
                    document.write("名字=" + this.name + "&nbsp;&nbsp;&nbsp;" + "年齡=" + this.age + "<br/>");
                }
                this.add = function() {
                    var res = 0;
                    for(var i = 1; i <= 1000; i++) {
                        res += i;
                    }
                    return res;
                }
            }

            var p1 = new Person("宋江", 90);
            p1.show();
            var p2 = new Person("李逵", 78);
            p2.show();
            document.write("res=" + p1.add());
        </script>
    </head>

    <body>
    </body>

</html>
View Code
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script language="JavaScript" type="text/javascript">
            function Person(name, age) {
                //傳遞實參初始化屬性
                this.name = name;
                this.age = age;
                //                這就是一個公開的函數,這樣的話浪費資源
                this.add = function() {
                    var res = 0;
                    for(var i = 1; i <= 1000; i++) {
                        res += i;
                    }
                    return res;
                }
            }
            function show(){
                    document.write("名字=" + this.name + "&nbsp;&nbsp;&nbsp;" + "年齡=" + this.age + "<br/>");
                }
            var p1 = new Person("宋江", 90);
            //函數功能傳遞
            p1.abc=show;
            p1.abc();
            //調用二
            p1.bcd=function show1(){
                document.write("名字"+this.name);
            }
            p1.bcd();
        </script>
    </head>

    <body>
    </body>

</html>
兩種調用

 

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script language="JavaScript" type="text/javascript">
            function Person(){
                this.name="abc";
                this.age=900;
                this.abc=function(v1,v2){
                    document.write(this.name+" "+this.age+" "+v1+" "+v2+"<br/>");
                }
            }
            var p1=new Person();
            p1.abc();
            p1.abc("背景","天津");
            var p2=new Person();
            p2.abc();
            p2.abc("南京","東京");
        </script>
    </head>

    <body>
    </body>

</html>
View Code

使用prototype去綁定一個函數給shout,直接綁定給類,不需要創建對象時創建新的函數屬性

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script language="JavaScript" type="text/javascript">
            function dog() {}
            var dog1 = new dog();
            dog.prototype.shout = function() {
                document.write("小狗" + "<br/>");
            }
            dog1.shout();
            var dog2 = new dog();
            dog2.shout();
            //判定是否為同一個函數
            document.write(dog1.shout == dog2.shout);
        </script>
    </head>

    <body>
    </body>

</html>
View Code

通過==符號可以判斷地址是否相等

2019.5.28

面向對象的深入學習:

 函數可以作為一個屬性:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link href="css/game.css" type="text/css" rel="stylesheet" />
        <script language="JavaScript" type="text/javascript">
            function jisuan(num1, num2, oper) {
                if(oper == "+") {
                    return num1 + num2;
                } else if(oper == "-") {
                    return num1 - num2;
                } else return num1 * num2;
            }

            function Person(name, age, fun) {
                this.name = name;
                this.age = age;
                this.myfun = fun;
            }
            var p1 = new Person("aa", 9, jisuan);
            window.alert(p1.name);
            window.alert(p1.myfun(89, 90, "+"));
        </script>
    </head>

    <body>

    </body>

</html>
View Code

創建對象的有一種形式:,如果一個對象比較簡單可以直接創建;

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link href="css/game.css" type="text/css" rel="stylesheet" />
        <script language="JavaScript" type="text/javascript">
            var dog = {
                name: "小狗",
                age: 8,
                fun1:function(){
                    window.alert("hello,world!");
                },
                fun1:function(){
                    window.alert("okokok");
                }
            };
            window.alert(dog.constructor);
            window.alert(dog.name + dog.age);
            dog.fun1();
        </script>
    </head>

    <body>

    </body>

</html>
View Code

類似於test.call(dog);的調用方法,調用對象實例

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link href="css/game.css" type="text/css" rel="stylesheet" />
        <script language="JavaScript" type="text/javascript">
            var dog = {
                name: "小狗",
                age: 8
            };
        
            function test(){
                window.alert(this.name);
            }
            test();
            var name="shunping";
            window.test();
            test.call(dog);
        </script>
    </head>

    <body>

    </body>

</html>
View Code

for in 的用法

eg:循環列舉出dog的屬性

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link href="css/game.css" type="text/css" rel="stylesheet" />
        <script language="JavaScript" type="text/javascript">
            var dog = {
                name: "小狗",
                age: 8,
                sayHello:function(a,b){
                    window.alter("結果="+(a+b));
                }
            };
for(var key in dog){
    window.alert(dog[key]);
}

        </script>
    </head>

    <body>

    </body>

</html>
View Code

遍歷window的屬性

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link href="css/game.css" type="text/css" rel="stylesheet" />
        <script language="JavaScript" type="text/javascript">
for(var key in window){
    document.write(key+":"+window[key]+"<br/>");
}
        </script>
    </head>

    <body>

    </body>

</html>
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM