使用Observable扩展Object有什么区别,并将Observable扩展为应用于下面的类。
运行应用程序时结果相同。
library models;
import 'package:polymer/polymer.dart';
class Person extends Object with Observable {
@observable String name;
@observable bool signedAgreement = false;
Person();
Person.from(Person other) {
name = other.name;
signedAgreement = other.signedAgreement;
}
blank() {
name = '';
signedAgreement = false;
}
}
library models;
import 'package:polymer/polymer.dart';
class Person extends Observable {
@observable String name;
@observable bool signedAgreement = false;
Person();
Person.from(Person other) {
name = other.name;
signedAgreement = other.signedAgreement;
}
blank() {
name = '';
signedAgreement = false;
}
}
答案 0 :(得分:7)
这两个声明之间的行为没有区别。
这是a quote from Florian Loitsch:
使用mixin扩展“Object”时,第一个mixin总是取代“Object”。
唯一的不同之处在于类层次结构(superclass
不一样):
import 'dart:mirrors';
abstract class Mixin {}
class A extends Mixin {}
class B extends Object with Mixin {}
main() {
print(reflectClass(A).superclass);
// => ClassMirror on 'Mixin'
print(reflectClass(A).superclass.superclass);
// => ClassMirror on 'Object'
print(reflectClass(B).superclass);
// => ClassMirror on 'dart.core.Object with .Mixin'
print(reflectClass(B).superclass.superclass);
// => ClassMirror on 'Object'
}